Додамо ще один інструмент - Малювання фігур
Додамо в GroupBox1 ще одну кнопку SpeedButton3 (Caption = Figure ).
Параметри кнопки - GroupIndex = 1, Tag = 2
Розмістимо також у лівому нижньому куті форми панель (Panel1) і помістимо на неї компонент Shape1. Встановіть значення Width і Height для Shape1 на 4 пікселя менше, ніж відповідні значення компонента Panel1. Додайте компонент Shape1 по центру панелі. p align="justify"> Компонент Shape1 дозволяє визначити, як буде виглядати намальована фігура. В інших режимах малювання даний компонент дозволяє візуально оцінити поточні колір і товщину лінії. При клацанні лівої клавіші мишки на компоненті-зразку Shape1 змінюється тип фігури (прямокутник, прямокутник із закругленими кутами, еліпс) і відбувається автоматичний перехід у режим В«FigureВ». Клацання правою клавіші по компоненту дозволяє перейти в режим малювання фігур з рівними вимірами (квадрати і т.п.). br/>В
15. Оголосимо ще дві глобальні змінні: dx, dy: integer;
В розділ uses для Unit1 необхідно додати модуль математичних функцій Math
Змініть вже описану нами процедуру DrawFigure наступним чином (додати виділені жирним рядка):
with form1.Image1.Canvas do.Mode: = Amode; form1.Image1.tag of
: begin (p1.X, p1.Y); (p2.X, p2.Y);;
: begin: = p2.X-p1.X;: = p2.Y-p1.Y; abs (dx)> abs (dy) then dx: = abs (dy) * sign (dx) else dy: = abs (dx) * sign (dy); form1.shape1.Shape of: Rectangle (p1.X, p1.Y, p2.X, p2.Y);: RoundRect (p1.X, p1.Y, p2.X, p2.Y, (p2.Y-p1.X) div 2, (p2.Y-p1.Y) div 2);: div 2, dy div 2);: Ellipse (p1.X, p1.Y, p1.X + dx, p1.Y + dy);;;;;
У методі Image1MouseMove замініть рядок 1: begin на1, 2: begin
У метод ColorGrid1Change
У метод SpinEdit1Change додайте:. Pen.Width: = spinedit1.Value;
16. Створимо обробник OnMouseDown для Shape1:
procedure TForm1.Shape1MouseDown (Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer); i: integer; ssLeft in Shift then: = (ord (shape1.Shape) +2 ) mod 6 elseodd (ord (Shape1.Shape)) then: = ord (shape1.Shape)-1i: = ord (shape1.Shape) +1;. Shape: = tshapetype (i);. Down: = true; 1 . Tag: = 2;
end;
. Реалізуємо функцію скасування попередньої операції. Для цього оголосимо глобальну змінну oldbitmap: tbitmap;
Відредагуйте метод FormCreate наступним чином:
image1.Parent.DoubleBuffered: = true;: = tbitmap.Create; image1
Створимо обробник OnDestroy для Form1:
oldbitmap.Free;
Встановимо властивості KeyPreview форми значення true і напише...