мо обробник OnKeyPress для форми:
if key = # 27 thenimage1.Canvas do (cliprect, oldbitmap.Canvas, cliprect);
Тепер будь-яку графічну операцію можна скасувати відразу після її виконання, натиснувши клавішу Esc.
. Додамо нашому редактору ще кілька функціональних можливостей. Реалізуємо можливість використання додаткових кольорів. p align="justify"> Розмістимо на формі компоненти StaticText1 (Caption = FG ), StaticText2 (Caption = BG ) (панель Additional) і ColorDialog1. Для компонентів StaticText1 і StaticText2 задамо наступні характеристики:
Alignment = taCenter; AutoSize = False; BorderStyle = sbsSunken; Font.Color = cllnactiveCaption.
У секцію imlementation додайте наступну процедуру:
procedure NewColor (sender: TObject; Acolor: TColor); Form1 dosender = StaticText1 then.ForegroundIndex: = -1 else.BackgroundIndex: = -1;// приховування підписів FG і BG на компоненті ColorGrid1
(sender as TStaticText). Color: = AColor;
(sender as TStaticText). Font.Color: = AColor xor $ FFFFFF;// колір тексту на компонентах StaticText буде інверсним до фону компонентаChange (Sender);;;
. Напишемо обробник OnMouseDown для StaticText1: ColorDialog1 doSender = StaticText1 then: = Shape1.Pen.ColorColor: = Shape1.Brush.Color; execute then// виклик діалогового вікна ColorDialog1, якщо воно було закрите кнопкою В«ОКВ», Execute = true (sender, color);;
Для OnMouseDown StaticText2 виберемо StaticText1MouseDown
Оброблювач OnChange для Colorgrid1 змінимо таким чином:
with colorgrid1 doForegroundIndex <> -1 then.Color: = clBtnFace;. Font.Color: = clInactiveCaption;; BackGroundIndex <> -1
end;
Для вибору кольору лінії або кольору фону, що не входить в палітру ColorGrid1, потрібно клацнути мишкою по компонентах StaticText1 або StaticText2 відповідно, в діалоговому вікні В«КолірВ» вказати новий колір і натиснути ОК. При цьому компонент StaticText забарвиться у відповідний текст, а мітка В«FGВ» (В«BGВ») з палітри ColorGrid1 зникне. p align="justify">. Реалізуємо завдання квітів за допомогою В«піпеткиВ». Внесемо зміни в обробник OnMouseDown для Image1:
with image1.Canvas do.Canvas.CopyRect (cliprect, image1.Canvas, cliprect); ssAlt in Shift thenButton
Тепер новий колір лінії і фону можна отримати безпосередньо із зображення, клацнувши відповідної лівої чи правої клавішею мишки в потрібному місці, утримуючи клавішу Alt.
. Розмістимо на формі додаткові компоненти. br/>В
Компоненти SpeedButton4 (Cuption = Roller , GroupIndex = 1, Tag = 3), SpeedButton5 (Cuption = span> Text , GroupIndex = 1, Tag = 4), Label2 (Caption = Text ), Label3 (Caption = Style ), Button5 (Caption = Font ), Edit1 (Text = ), FontDialog1 (Options.fdEffects = false - відключення можливості налаштування кольору шрифту, а також вибору режиму підкреслення і перекреслення тексту), ComboBox1 і ComboBox2 (Style = csOwnerDeawFixed, Text = , ItemIndex = 0).
Для кнопок SpeedButton подія OnClick визначте як SpeedButton1Click.
. Четвертим режимом малювання буде В«ВаликВ» (Roller). Цей режим дозволяє заливати поточним кольором фону області, обмежені лініями інших кольорів. Заливка проводиться при клацанні мишею всередині потрібній області. p align="justify"> Внесемо зміна в метод Image1MouseDown:
if ssAlt in Shift thenButton of: NewColor (Statictext1, Pixels [x, y]);: NewColor (StaticText2, Pixels [x, y]); image1.Tag = 3 then (x, y , pixels [x, y], fsSurface)
23. П'ятий режим - додавання в малюнок тексту. У метод Image1MouseDown додамо: image1.Tag = 3 then (x, y, pixels [x, y], fsSurface) if image1.tag = 4 then TextOut (x, y, edit1.Text);
Створимо обробник OnEnter для Edit1:
SpeedButton5.Down: = true;. Tag: = 4;
У метод ColorGrid1Change додайте оператори:
image1.Canvas.Pen.Color: = shape1.Pen.Color;. Canvas.Font.Color: = shape1.Pen.Color;
Новий режим дозволяє поміщати на зображення текст, що міститься в полі введення Edit1. Текст вставля...