Сторінка 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