|
Rišemo lahko na tiste gradnike, ki vsebujejo lastnost, imenovano Canvas (površina). Najboljši za uporabo je gradnik PaintBox , iz paletne vrstice System. Njegova naloge je, da risanje omeji, oz. nam dodeli površino, da ne packamo po celotnem oknu Form1. Gradnik PaintBox ima naslednje Lastnosti:
Brush, Pen, Font, Pixels
Za lažje delo lahko v nad gradnikom PaintBox uporabimo nekaj metod, ki nam bodo olajšali delo.
MoveTo, LineTo, Rectangle, Ellipse, PollyGon, ...
Primer:
V gradniku PaintBox narišimo rdeèo toèko v središèu gradnika:
- V Form1 potegnemo gradnik PaintBox
- V Form1 potegnemo gradnik Button
- Na podlogi dvakrat pritisnemo z desnim gumbom miške nad gumbom
- Vpišemo kodo:
PaintBox1.Canvas.Pixels[PaintBox1.Width/2, PaintBox2.Height/2] := clRed
Torej: Gradniku PaintBox z lastnostjo Canvas, in podlastnostjo Pixels v doloèenih koordinatah doloèimo rdeèo barvo. Pri koordinatah smo uporabili tudi lastnosti Width in Height, ki doloèata višino in širino gradnika. Na podoben naèin lahko uporabimo tudi druge lastnosti in metode Canvas-a. Kako preprosto!
Delo oz. bolj pisanje si lahko olajšamo v primeru, ko moramo napisati veè zaporednih stavkov, ki se nanašajo na doloèen gradnik. Pri tem uporabimo stavek with...do, ki ga Delphi pozna.
Primer:
with PaintBox.Canvas do
begin
MoveTo(10,10);
LineTo(20,20);
LineTo(20,30);
...
end;
ta zapis je enakovreden zapisu
begin
PaintBox.Canvas. MoveTo(10,10);
PaintBox.Canvas. LineTo(20,20);
PaintBox.Canvas.LineTo(20,30);
...
end;
Sedaj znamo narediti nek del aplikacije, ki se izvrši ob pritisku z miško na gumb. Sedaj pa si npr. zaželimo, da bi se narisani koordinatni sistem pojavil na zaslonu takrat, ko aplikacijo zaženemo. To naredimo na sledeèi naèin:
- V ozadje povleèemo gradnik PaintBox, na katerega bomo risali.
- Izberemo Form1 in spremenimo dogodek (events) OnActivate. Na okence zraven dvakrat pritisnemo z levim gumbom miške. V oknu Code Editor-je se nam pojavi predloga, v katero bomo vpisali zaporedje ukazov.
procedure TForm1.FormActivate(Sender: TObject);
begin
with PaintBox1.Canvas do
begin
MoveTo(10,10);
LineTo(10,PaintBox1.Height-5);
MoveTo(5,PaintBox1.Height-10);
LineTo(PaintBox1.Width-5, PaintBox1.height-10);
end;
end;
- Sedaj moramo samo še nastaviti dogodek (events) OnPaint gradnika PaintBox. Nastavimo ga na FormActivate.
|