|
! Vytvorme jednoduchú aplikáciu grafický editor.
Začneme nový projekt File -- > New Application. Do formuláru
položíme
grafickú plochu (Image1) a urobíme skratku
na jej Canvas.
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin g.Pixels[x,y]:=cBlack; end; |
! Vyskúšajte projekt.
Čo v ňom zmeniť, aby sa kreslili čiary?
Využijeme na to parameter Shift, ktorý je typu TShiftState:
platí: TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft,
ssRight, ssMiddle, ssDouble);
Takže sa najprv v procedúre spýtame, či je stlačené ľavé tlačidlo a
až potom urobíme čiaru. Upravte procedúru:
procedure TForm1.Image1MouseMove(Sender:TObject; Shift:TShiftState;
X,Y:Integer);
begin if Shift=[ssLeft] then g.LineTo(x,y); end; |
Náš grafický editor sa ešte nespráva celkom tak, ako by sme chceli:
nakreslí čiaru aj z miesta, kde bola myš pustená na nové miesto -- to by
sme nechceli. Pri stlačení myši musíme najprv presunúť grafické pero na
nové miesto -- t.j. použijeme udalosť -- OnMouseDown -- vo formulári
vyznačme Image1, v Objektovom inšpektore záložku Events, riadok
OnMouseDown
a dvojlikom na ňu môžeme definovať procedúru:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer); begin g.MoveTo(X,Y); end; |
! Vyskúšajte projekt.
Vybereme komponent TrackBar (z palety komponentov Win32), položme
ho do formuláru, prispôsobme jeho veľkosť (posúvaním čiernych štvorčekov)
procedure TForm1.TrackBar1Change(Sender: TObject);
begin g.Pen.Width:=TrackBar1.Position; end; |
Vypisovanie súradníc myši
Na formulár položme komponent Label -- sem budeme písať súradnice myši,
ak sa jej kurzor bude pohybovať nad
grafickou plochou (tento výpis pridáme do Image1MouseMove):
napr. Label1.Caption:=IntToStr(x)+','+IntToStr(y);
Paleta farieb a vybraná farba
Paleta môže byť štandardný Color Dialog, ktorý nájdete v palete komponentov
v záložke Dialogs:
Vybraná farba sa bude zobrazovať v maličkom image (Image2) --
položte ho na formulár. Kliknutím naň sa bude otvárať aj štandarný ColorDialog.
Využijeme jeho metódu Execute a jeho vlastnosť Color. Naprogramujte teda
udalosť onMouseDown na Image2:
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin ColorDialog1.Execute; g.Pen.Color:=colorDialog1.Color; farba.Brush.Color:=g.Pen.Color; farba.FillRect(Image2.ClientRect); end; |
! Vyskúšajte program.
! Do programu doplňte zapisovanie a načítavanie
obrázku, ktorý používateľ nakreslí. Využite dialógy na prácu so súbormi.
Na samotný zápis využite metódy LoadFromFile a SaveToFile
pre Image1.Picture.