Сторінка 1

неділя, 5 лютого 2017 р.

Відображення базових графічних примітивів засобами мови програмування

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
      1. Для чого використовують компонент Shape в середовищі програмування Lazarus?
      2. Як змінюють властивості геометричних фігур, побудованих за допомогою компонента Shape?
      Діємо разом
      • Вправа 1. У середовищі програмування Lazarus створіть проект, у якому, коли натискають мишку на зображенні круга, він зафарбовується в колір, обраний у групі перемикачів Колір, а коли натискають мишкою зображення квадрата, - зафарбовується обраним кольором та застосовується стиль заливки, який обирають у групі Заливка.
      1. Завантажте середовище Lazarus і створіть новий проект. 
      2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям:
      3. Для додавання на форму фігур скористайтеся компонентом Shape:
      4. Для додавання на форму груп перемикачів скористайтеся компонентом RadioGroup і додайте відповідні значення у властивість Items:
      5. У вікні Інспектора об'єктів встановіть властивості для фігур: Shape1 (Круг) і Shape2 (Квадрат)
      6. Створіть процедуру опрацювання події натискання кнопкою миші на першій фігурі. Для цього оберіть у вікні Інспектора об'єктів компонент Shape1, на вкладці Події двічі натисніть у клітинці праворуч (...) від OnMouseDown 
        і введіть команди у вікні редактора коду:
        procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        begin
           if RadioGroup1.ItemIndex = 0 then
              Shape1.Brush.Color:=clRed
           else if RadioGroup1.ItemIndex = 1 then
              Shape1.Brush.Color:=clBlue
           else if RadioGroup1.ItemIndex = 2 then
              Shape1.Brush.Color:=clYellow
           else
              Shape1.Brush.Color:=clGreen;
        end;
      7. Створіть аналогічно процедуру опрацювання події натискання кнопкою миші на другій фігурі. Використайте такий програмний код:
        procedure TForm1.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        begin
           if RadioGroup1.ItemIndex = 0 then
              Shape2.Brush.Color:=clRed
           else if RadioGroup1.ItemIndex = 1 then
              Shape2.Brush.Color:=clBlue
           else if RadioGroup1.ItemIndex = 2 then
              Shape2.Brush.Color:=clYellow
           else
              Shape2.Brush.Color:=clGreen;
        
           if RadioGroup2.ItemIndex = 0 then
              Shape2.Brush.Style:=bsHorizontal
           else if RadioGroup2.ItemIndex = 1 then
              Shape2.Brush.Style:=bsVertical
           else
              Shape2.Brush.Style:=bsSolid;
        end; 
      8. Проаналізуйте програмний код опрацювання подій для обох фігур. Запустіть проект на виконання. Перевірте, чи змінюють свої властивості геометричні фігури.
      9. Завершіть роботу з проектом і середовищем програмування.
      • Вправа 2. У середовищі програмування Lazarus розробіть проект Лінії, у якому на формі будуть малюватися лінії за допомогою протягування мишею: початок лінії буде розташовано в позиції, в якій натиснули кнопку миші, а кінець – де відпустили кнопку миші.
      1. Завантажте середовище Lazarus і створіть новий проект.
      2. Створіть процедуру опрацювання події натиснули кнопкою миші. Для цього оберіть у вікні Інспектора об'єктів компонент Form1, на вкладці Події двічі натисніть у клітинці праворуч (...) від OnMouseDown 
        і введіть команди у вікні редактора коду
        procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        begin
          DownM := True;
          Form1.Canvas.MoveTo(X,Y);
        end; 
      3. У вікні редактора коду запишіть програмний код для оголошення змінної логічного типу DownM, яка передаватиме стан натиснення миші в кожну процедуру опрацювання події
        DownM: Boolean;
        Зверніть увагу, що ми записуємо її у програмний код до опису процедури опрацювання подій:
      4. У програмний код (аналогічно, як у пункті 2) запишіть процедури опрацювання подій для форми OnMouseUp - відпущена кнопка миші і OnMouseMove - переміщення миші:
        procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        begin
          DownM := False;
        end;
        
        procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        begin
           if DownM = True then
              begin
                Form1.Canvas.Pen.Color:=clFuchsia;
                Form1.Canvas.Pen.Width:=5;
                Form1.Canvas.Pen.Style:=psDot;
                Form1.Canvas.LineTo(X,Y)
              end
        end;  
      5. Проаналізуйте програмний код створених процедур, зверніть увагу на використання властивості Canvas - властивості компонента Form, який у свою чергу є об'єктом, що має свої методи і властивості. 
      6. Запустіть проект на виконання. Спробуйте намалювати лініями своє ім'я.
      7. Завершіть роботу з проектом і середовищем програмування.
      Працюємо в парах
      • Поміркуйте, як створити проект, у якому можна продемонструвати різні стилі заливки фігур. Реалізуйте цей проект у середовищі програмування Lazarus.
      Виконуємо самостійно
      • Завдання. Розробіть проект Прямокутник, у якому в текстові поля чи у список даних вводять пари координат чисел, натискають кнопку Побудувати й отримують прямокутник, побудований за вказаними значеннями координат. Розкоментуйте рядок з кодом і проаналізуйте зміни у виконанні програми. Орієнтовний зразок інтерфейсу
        і програмний код, який можна використати у проекті:
        procedure TForm1.Button1Click(Sender: TObject);
        var x1, x2, y1, y2: integer;
        begin
          x1:=StrToInt(Edit1.Text);
          y1:=StrToInt(Edit2.Text);
          x2:=StrToInt(Edit3.Text);
          y2:=StrToInt(Edit4.Text);
          Form1.Canvas.Brush.Color:=clYellow;
          Form1.Canvas.Rectangle(x1,y1,x2,y2);
          // Form1.Canvas.FillRect(x1,y1,x2,y2);
        end; 
      Домашнє завдання
      • Опрацювати підручник: §27 с. 183-188

      субота, 4 лютого 2017 р.

      Відображення рисунків із зовнішніх файлів

      Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
      Види навчальної діяльності
      Обговорюємо
          1. Як у проектах, розроблених у середовищі програмування Lazarus, розміщують графічні зображення на формі? Яке їх призначення?
          2. Які засоби передбачені в середовищі програмування Lazarus, щоб додані на форму малюнки не спотворювались, збільшувались, імітували рух?
          Діємо разом
          • Вправа 1. У середовищі програмування Lazarus створіть проект, форма якого містить малюнок, що збережений у файлі ozon.png. При натисненні кнопки Збільшити розміри малюнка збільшується (імітується ефект наближення). 
          1. Завантажте середовище Lazarus і створіть новий проект. 
          2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям:
          3. Для додавання на форму зображення скористайтеся компонентом Image:
          4. У вікні Інспектора об'єктів встановіть властивості для зображення:
            1 - виберіть об'єкт Image1,  2 (AutoSize) - автоматична зміна розміру компонента до реального розміру зображення, 3 (Hint) - текст вспливаючої підказки, коли курсор над об'єктом, 4 (Picture) - завантаження зображення, 5 (ShowHint) - показувати чи не показувати текстову підказку, 6 (Stretch) - автоматичне масштабування (стиснення чи розтягнення). 
          5. Створіть процедуру опрацювання події натиснення кнопки Збільшити і введіть команди у вікні редактора коду для переміщення малюнка та збільшення його:
            procedure TForm1.Button1Click(Sender: TObject);
            begin
              Image1.Top := Image1.Top + 100;
              Image1.Left := Image1.Left + 100;
              Image1.Height := Image1.Height + 100;
              Image1.Width := Image1.Width + 100;
            end;
          6. Запустіть проект на виконання. Перевірте, чи отримали ви потрібний результат.
          7. Завершіть роботу з проектом і середовищем програмування.
          • Вправа 2. У середовищі програмування Lazarus створіть проект Полюси магнітів, який містить два малюнки магнітів, розташовані один напроти другого. Потрібні зображення збережені у файлах magnit1.pngmagnit2.png. Коли натиснути мишею на лівому малюнку, вони обидва наближаються один до одного, а на правому – віддаляються.
          1. Завантажте середовище Lazarus і створіть новий проект.
          2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям:
          3. Створіть процедуру опрацювання події натиснули кнопкою миші. Для цього оберіть у вікні Інспектора об'єктів компонент Іmage1, на вкладці Події двічі натисніть у клітинці праворуч (...) від OnMouseDown 
            і введіть команди у вікні редактора коду для переміщення малюнка:
          4. procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
              Shift: TShiftState; X, Y: Integer);
            begin
              Image1.Left := Image1.Left + 10;
              Image2.Left := Image2.Left - 10
            end; 
          5. Виконайте аналогічні дії для компонента Image2, врахувавши зміни у програмному коді. 
          6. Запустіть проект на виконання. Перевірте, чи отримали ви потрібний результат.
          7. Завершіть роботу з проектом і середовищем програмування.
          Працюємо в парах
          • Поміркуйте, як скласти таблицю узагальнення щодо роботи із графічними об'єктами в середовищі програмування Lazarus. Складіть її засобами текстового процесора. Доповнюйте таблицю новими відомостями.
          Виконуємо самостійно
          • Завдання. Створіть проект Площа фігур, вікно якого містить зображення трикутника, прямокутника й круга (створити в графічному редакторі), та опрацьовуються такі події: при наведенні вказівника миші на кожну фігуру та утримання натиснутою її лівої кнопки миші на екранній формі в написі виводиться формула площі відповідної фігури; якщо кнопку відпустити, формула зникне. Розгляньте зразок виконаного проекту
            і проаналізуйте програмний код для опрацювання подій першого зображення (трикутника):
            procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
              Shift: TShiftState; X, Y: Integer);
            begin
              Label1.Caption := 'S = sqrt(p*(p-a))*(p-b)*(p-c)';
            end;
            
            procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
              Shift: TShiftState; X, Y: Integer);
            begin
              Label1.Caption := 'Формула площі';
            end;    
            Напишіть програмний код для обробки подій для інших зображень (прямокутника і круга), при виконанні завдання для компонентів Image змінюйте значення таких властивостей:
          Домашнє завдання
          • Опрацювати підручник: §27 с. 181-183