zaaw ansow ane programow anie w (pakiecie) delphi · obiekty te (pióra) s¹ u¿ywane do rysowania...

68
Zaawansowane programowanie w (pakiecie) Delphi Andrzej Marciniak DEL420 DEL-6(1 z 68) Prezentacja multimedialna przygotowana za pomoc¹ systemu Corel® Presentations 11 i X3 Copyright © 2004 - 2010 by Andrzej Marciniak

Upload: lamque

Post on 01-Mar-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Zaawansowane programowaniew (pakiecie) Delphi

Andrzej Marciniak

DEL420

DEL-6(1 z 68)Prezentacja multimedialna przygotowana za pomoc¹ systemu Corel® Presentations 11 i X3Copyright © 2004 - 2010 by Andrzej Marciniak

�przygotowanie systemu pomocy dla programuokienkowego� wyœwietlanie wskazówek� do³¹czanie zbiorów pomocy i ich obs³uga w jêzyku

Delphi Pascal� przygotowanie zbiorów pomocy w edytorach tekstów

w formacie RTF (skr. ang. Rich Text Format)� tworzenie zbioru tematów (hase³)� ³¹czenie tematów� do³¹czanie rysunków i animacji

� kompilacja zbiorów pomocy do postaci .HLP (programMicrosoft Help Workshop)� tworzenie zbioru projektowego� tworzenie zbioru zawartoœci

Na poprzednim wyk³adzie ...

DEL-6(2 z 68)

�elementy jêzyka Delphi Pascal zwi¹zane z grafik¹� funkcje GDI� typ TCanvas� w³asnoœci typu TCanvas

(Brush, ClipRect, CopyMode, Font, Pen, PenPos,Pixels)

� metody typu TCanvas (Arc, Chord, CopyRect, Draw, Ellipse, FillRect,FloodFill, FrameRect, LineTo, MoveTo, Pie,PolyBezier, PolyBezierTo, Polygon, Polyline,Rectangle, RoundRect, StretchDraw, TextHeight,TextOut, TextRect, TextWidth)

Na tym wyk³adzie ...

DEL-6(3 z 68)

�GDI (skr. ang. Graphics Device Interface) – czêœæ funkcjiAPI œrodowiska Windows, które umo¿liwiaj¹ konstrukcjeelementów graficznych w sposób niezale¿ny odurz¹dzenia (ang. device-independent graphics)

� typ klasowy TCanvas

�pêdzle (ang. brushes)

�pióra (ang. pens)

�kroje, czcionki (ang. fonts)

�palety (ang. palettes)

� typ TColor

�komponenty Shape, Chart i Image

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Elementy zwi¹zane z grafik¹:

DEL-6(4 z 68)

�wypisywanie tekstów,

�rysowanie figur (kszta³tów),

�wyœwietlanie map bitowych

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

GDI

Grupa funkcji GDI zawiera wszystkie niezbêdnefunkcje umo¿liwiaj¹ce rysowanie na powierzchniokien, m. in.:

DEL-6(5 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

GDI

oraz sterowanie elementami graficznymi, m. in.okreœlanie:

�krojów,

�kolorów,

�gruboœci linii

i wykonywanie:

�cieniowania,

�skalowania,

�orientowania elementów graficznych w oknach.DEL-6(6 z 68)

�odczytanie (uzyskanie) tzw. kontekstu urz¹dzenia(ang. device context, w skrócie: DC) okienka, naktórym ma byæ wykonana operacja graficzna,

�wykonanie jednej lub kilku operacji graficznych,

�zwolnienie kontekstu urz¹dzenia (brak wykonaniatej operacji mo¿e doprowadziæ do przepe³nieniazasobów programowych).

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

GDI

Dostêp do funkcji GDI z poziomu jêzyka DelphiPascal jest mo¿liwy poprzez modu³ Windows.

Schemat postêpowania:

DEL-6(7 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

GDIPrzyk³ad (zmiana koloru piksela)

var moj_DC : HDC;

– deklaracja zmiennej przechowuj¹cej kontekst urz¹dzenia (typ HDC jest zdefiniowany w module Windows poprzez typ Longword)

moj_DC:=GetDC(ident_okna);

– uzyskanie kontekstu urz¹dzenia dla komponentu (okienka) o identyfikatorze ident_okna (identyfikator ten jest wartoœci¹ w³asnoœci Handle typu HWND – typ zdefiniowany te¿ w module Windows poprzez typ Longword)

SetPixel (moj_DC, 10, 10, RGB(255, 0, 0));

– zmiana koloru piksela o wspó³rzêdnych (10, 10) na czerwony

ReleaseDC (ident_okna, moj_DC );

– zwolnienie kontekstu urz¹dzenia DEL-6(8 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Typ TCanvas

Typ TCanvas jest „obejm¹” dla funkcji GDI (ang.canvas – brezent, p³ótno, ¿agiel). U¿ywanie tego typunie wymaga odwo³ywania siê do kontekstuurz¹dzenia.

Na komponentach (okienkach), które maj¹ w³asnoœæCanvas mo¿na „bezpoœrednio” wykonywaæ operacjegraficzne.

Uwaga: W³asnoœæ Canvas jest okreœlona m. in. dla klas TForm i TGraphicControl (i tym samym dla wszystkich ich potomków).

DEL-6(9 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Typ TCanvas

Przyk³ad (wykonanie tej samej operacji, co poprzednio dla g³ównej formatki)

Canvas.Pixels [10, 10]:=clRed;

– dostêp do w³asnoœci Pixels obiektu typu TCanvas (obiektem tym jest w³asnoœæ Canvas) i przypisanie mu wartoœci okreœlaj¹cej kolor (sta³e o przedrostku cl s¹ zdefiniowane w module Graphics)

DEL-6(10 z 68)

�Brush (typu TBrush),

�CopyMode (typu TCopyMode),

�Font (typu TFont),

�Pen (typu TPen),

�PenPos (typu TPoint),

�Pixels (w³asnoœæ tablicowa, dwuwymiarowa, typu TColor),

�ClipRect (typu TRect),

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Typ TCanvas

W typie TCanvas s¹ m. in. zdefiniowane nastêpuj¹cew³asnoœci umo¿liwiaj¹ce dostêp do kilku klas biblioteki VCLzwi¹zanych z grafik¹:

DEL-6(11 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Typ TCanvas

a ponadto m. in. metody:

�Arc,

�BrushCopy,

�Chord,

�CopyRect,

�Draw,

�DrawFocusRect,

�Ellipse,

�FillRect,

�FloodFill,

�FrameRect,

�LineTo,

�MoveTo,

�Pie,

�PolyBezier,

�PolyBezierTo,

�Polygon,

�Polyline,

�Rectangle,

�RoundRect,

�TextOut,

�TextRect.

DEL-6(12 z 68)

�przy programowaniu Canvas „wewn¹trz” obiektu zawieraj¹cego têw³asnoœæ kwalifikowanie poprzez obiekt nie jest konieczne – innymi s³owy: mo¿na np. napisaæ Canvas.Rectangle (10, 10, 10, 10); zamiast np. Form1.Canvas.Rectangle (10, 10, 10, 10);

� jeœli u¿ywa siê komponentów, których nie trzeba deklarowaæ (bodeklaracje s¹ do³¹czane automatycznie w postaci pól do definicjitypu klasowego), trzeba dla nich stosowaæ kwalifikowanie poprzezw³asnoœæ Canvas – innymi s³owy: konstrukcji Image1.Canvas.Pen.Width :=5; nie mo¿na zast¹piæ konstrukcj¹ Image1.Pen.Width :=5;

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Typ TCanvas

Wskazówki dotycz¹ce korzystania z elemntów typu TCanvas :

DEL-6(13 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

Obiekty tego typu (pêdzle) s¹ u¿ywane dowype³niania (malowania) wnêtrzy wielok¹tów, elips i te³ okien.

Trzema g³ównymi w³asnoœciami s¹:

�Color,

�Style,

�Bitmap,

a g³ówn¹ metod¹

�Assign.DEL-6(14 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

W³asnoœæ Color

Uwaga: Dla formatek i niektórych okienkowych elementów steruj¹cych wartoœæ w³asnoœci Color mo¿e byæ zmieniona w okienku Object Inspector .

Przyk³ad okreœlenia koloru pêdzla dla obiektu typu TCanvas:

Canvas.Brush.Color:=clRed;

gdzie sta³a clRed oznacza kolor czerwony.DEL-6(15 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

W³asnoœæ Color

W³asnoœæ ta jest typu TColor (bêdzie na nastêpnymwyk³adzie).

Predefiniowane sta³e (nie wszystkie) oznaczaj¹cekolory s¹ zdefiniowane w module Graphics:

clBlack, clGreen, clGray, clSilver, clBlue, clWhite,clMaroon (kasztanowy), clOlive (oliwkowy),clNavy (granatowy), clPurple (purpurowy),clTeal (?), clLime (jasnozielony),clFuchsia (jasnofioletowy), clAqua (morski).

DEL-6(16 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

W³asnoœæ Style

W³asnoœæ okreœla wzorzec pêdzla.

Przyk³ad okreœlenia wzorca:

Canvas.Brush.Style:=bsCross;

W³asnoœæ Style jest typu wyliczeniowegoTBrushStyle, zdefiniowanego w module Graphics:

type TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal , bsBDiagonal, bsCross, bsDiagCross);

DEL-6(17 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

W³asnoœæ Style

Poszczególne elementy okreœlaj¹ wzorzec pêdzla:

bsSolid – kolor jednolity,

bsCross – przecinaj¹ce siê liniepoziome i pionowe,

bsClear – wzorzec przeŸroczysty,

bsDiagCross – przecinaj¹ce siê linieprzek¹tne w obu kierunkach, DEL-6(18 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

W³asnoœæ Style

Poszczególne elementy okreœlaj¹ wzorzec pêdzla:

bsBDiagonal – linie przek¹tne o kierunkupd-zach – pn-wsch,

bsHorizontal – linie poziome,

bsFDiagonal – linie przek¹tne o kierunkupn-zach – pd-wsch,

bsVertical – linie pionowe.DEL-6(19 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

W³asnoœæ Bitmap

W³asnoœæ ta umo¿liwia okreœlenie w³asnego wzorca pêdzla(wzorzec ten okreœla siê w postaci mapy bitowej).

Przyk³ad

var Moj_Pedzel : TBitmap;

Moj_Pedzel:=TBitmap.Create;Moj_Pedzel.LoadFromFile (’MojWzorzec.bmp’);Canvas.Brush.Bitmap:=Moj_Pedzel;

Po u¿yciu pêdzla nale¿y wykonaæ instrukcje:

Canvas.Brush.Bitmap:=nil;Moj_Pedzel .Free;

DEL-6(20 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TBrush

Metoda Assign

Metoda ta umo¿liwia skopiowanie „zawartoœci” jednego pêdzlado innego pêdzla.

Przyk³ad (skopiowania zawartoœci pêdzla obiektu Image1 do pêdzla Moj_Pedzel)

var Moj_Pedzel : TBrush;Moj_Pedzel:=TBrush.Create;Moj_Pedzel.Assign (Image1.Canvas.Brush);

DEL-6(21 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

Obiekty te (pióra) s¹ u¿ywane do rysowania linii i obrysu (zaznaczania brzegu) figur.G³ówne w³asnoœci:

�Color,

�Style,

�Width,

�Mode.

G³ówna metoda:

�Assign.

W³asnoœæ Color i metoda Assign – jak dla typu TBrush.

DEL-6(22 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

W³asnoœæ Style

W³asnoœæ ta okreœla wzorzec linii i jest typuwyliczeniowego TPenStyle zdefiniowanego w moduleGraphics:

type TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear , psInsideFrame);

DEL-6(23 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

W³asnoœæ Style

Znaczenia poszczególnych elementów:

psSolid – linia ci¹g³a,psDash – linia przerywana,psDot – linia kropkowana,psDashDot – linia symetrii (kreska, kropka),psDashDotDot – linia „kreska, kropka, kropka”,psClear – linia przezroczysta,psInsideFrame – linia ci¹g³a (elementu tego u¿ywa siê

podczas rysowania w kolorze, który nieznajduje siê w tablicy kolorów œrodowiskaWindows).

DEL-6(24 z 68)Uwaga: Linie kropkowane i przerywane mog¹ mieæ tylko szerokoœæ jednego piksela.

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

W³asnoœæ Width

W³asnoœæ okreœla szerokoœæ linii w pikselach i jesttypu Integer (dla wartoœci mniejszych od 1 przyjmuje siê 1).

DEL-6(25 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

W³asnoœæ Mode

W³asnoœæ okreœla wzajemne oddzia³ywanie kolorupióra i koloru powierzchni rysowania (t³a).

Typem w³asnoœci jest typ wyliczeniowy TPenMode(zdefiniowany w module Graphics):

DEL-6(26 z 68)

type TBrushStyle = (pmBlack , pmWhite , pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmNotMerge , pmMask, pmNotMask, pmXor, pmNotXor);

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

W³asnoœæ Mode

Znaczenia poszczególnych elementów s¹ okreœlane przezoperacjê logiczn¹ na odpowiadaj¹cych sobie bitach kolorówpióra (P) i t³a (T):pmBlack – 0 (zawsze czarny),pmWhite – 1 (zawsze bia³y),pmNop – T (bez zmiany),pmNot – not T (inwersja koloru t³a),pmCopy – P („zwyk³e” rysowanie w kolorze pióra),pmNotCopy – not P (inwersja koloru pióra),pmMergePenNot – P or not T,pmMaskPenNot – P and not T,

DEL-6(27 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TPen

W³asnoœæ Mode

Znaczenia poszczególnych elementów s¹ okreœlane przezoperacjê logiczn¹ na odpowiadaj¹cych sobie bitach kolorówpióra (P) i t³a (T):pmMergeNotPen – not P or T,pmMaskNotPen – not P and T,pmMerge – P or T,pmNotMerge – not (P or T ) = not P and not T,pmMask – P and T,pmNotMask – not (P and T) = not P or not T,pmXor – P xor T,pmNotXor – not (P xor T).

DEL-6(28 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TFont

Obiekty te s¹ u¿ywane do przedstawienia tekstu naekranie.

Podstawowe w³asnoœci:

�Color,

�Height,

�Size,

�Name,

�Style.W³asnoœæ Color – jak poprzednio.

DEL-6(29 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TFont

W³asnoœæ Height

W³asnoœæ okreœla wysokoœæ kroju mierzon¹ w pikselach i jest typu Integer.

W œrodowisku Delphi wysokoœæ jest zwi¹zana z rozmiarem (w³asnoœæ Size) zale¿noœci¹

kroj.Height := !kroj.Size * kroj.PixelsPerInch div 72

(jeœli wysokoœæ jest dodatnia, to rozmiar jest ujemny i na odwrót; zwykle dodatni jest rozmiar ).Uwaga: W ³asnoœæ PixelsPerInch s³u¿y do przeliczania rozmiarów

krojów ekranowych na rozmiary krojów drukarki. Nie powinna byæ ona zmieniana . DEL-6(30 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TFont

W³asnoœæ Size

Okreœla rozmiar kroju w punktach i jest typu Integer.Ujemna wartoœæ oznacza uwzglêdnieniewewnêtrznego odstêpu (tmInternalLeading), a dodatnia oznacza rozmiar znaków bez tego odstêpu(wysokoœæ w punktach litery x).

DEL-6(31 z 68)

tm* – pola rekordu tagTextMetrics zdefiniowanego w module Windows, który okreœla charakterystyki kroju

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TFont

W³asnoœæ Name

Okreœla nazwê kroju w postaci ³añcucha AnsiString.

Przyk³ad

Canvas.Font.Name:=’Arial’;

DEL-6(32 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TFont

W³asnoœæ Style

Okreœla rodzaj pisma i jest typu zbiorowegoTFontStyles, który jest zbiorem elementów typuwyliczeniowego TFontStyle:

type TFontStyle = (fsBold, fsItalic, fsUnderline, fsStrikeOut); TFontStyles = set of TFontStyle;

DEL-6(33 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Obiekty typu TFont

Poszczególne elementy oznaczaj¹:

fsBold – pismo pó³grube,fsItalic – kursywê,fsUnderline – podkreœlenie,fsStrikeOut – przekreœlenie.

Przyk³ad

Canvas.Font.Style:=[fsBold, fsUnderline];

W³asnoœæ Style

DEL-6(34 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹W³asnoœæ TCanvas.PenPos

Okreœla aktualne po³o¿enie pióra i jest typu TPoint(zdefiniowanego w module Windows):

type TPoint = record X, Y : Longint

end;

Bezpoœrednie przypisanie wartoœci polom rekorduPenPos jest równowa¿ne wywo³aniu metody MoveTo(bêdzie dalej).Wartoœæ w³asnoœci okreœla punkt pocz¹tkowy przyrysowaniu odcinka za pomoc¹ metody LineTo (te¿bêdzie dalej).

DEL-6(35 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹W³asnoœæ TCanvas.ClipRect

Okreœla prostok¹t, wewn¹trz którego mo¿e wyst¹piærysunek (inaczej: okreœla prostok¹t obciêcia rysunku).

W³asnoœæ ta jest typu TRect (zdefiniowanego w module Windows):

type TRect = recordcase Integer of

0 : ( Left, Top, Right, Bottom : Integer);

1 : ( TopLeft, BottomRight : TPoint)

end;DEL-6(36 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

W³asnoœæ TCanvas.CopyMode

W³asnoœæ podobna do w³asnoœci Mode typu TPen – okreœla sposób kopiowania rysunków (mapbitowych) na powierzchniê rysowania (t³o).

Typem jej wartoœci jest typ TCopyMode zdefiniowanyjako identyczny z typem Longint.

Przy okreœlaniu wartoœci w³asnoœci nale¿y pos³ugiwaæ siê sta³ymi o przedrostku cm, które s¹zdefiniowane w module Windows.

DEL-6(37 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

W³asnoœæ TCanvas.CopyModeZnaczenia sta³ych cm* (R – bit koloru rysunku nak³adanego, T – bit kolorurysunku istniej¹cego (t³a):cmBlackness – wype³nienie obszaru kolorem czarnym,cmDstInvert – not T,cmMergeCopy – R and T,cmMergePaint – not R or T,cmNotSrcCopy – not R,cmNotSrcErase – not (R or T),cmPatCopy – wzorzec (pêdzla),cmPatInvert – wzorzec xor T,cmPatPaint – (not R or wzorzec) or T,cmSrcAnd – R and T (= cmMergeCopy),cmSrcCopy – R (przyjmowane domyœlnie),cmSrcErase – R and not T,cmSrcInvert – R xor T,cmSrcPaint – R or T,cmWhiteness – wype³nienie obszaru kolorem bia³ym. DEL-6(38 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

W³asnoœæ TCanvas.Pixels

W³asnoœæ ta umo¿liwia albo odczytanie koloru pikselao danych wspó³rzêdnych (wewn¹trz prostok¹taobciêcia), albo zmianê tego koloru.

Przyk³ad

Canvas.Pixels[10][10]:=clRed;

DEL-6(39 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie odcinków – metody MoveTo i LineTo

procedure MoveTo (X, Y : Integer);

– przesuniêcie aktualnej pozycji rysowania do punktuo wspó³rzêdnych (X, Y)

Uwaga: Wywo³anie metody MoveTo jestrównowa¿ne ustaleniu wartoœci w³asnoœciPenPos.

procedure LineTo (X, Y : Integer);

– narysowanie odcinka od punktu okreœlonegowartoœci¹ w³asnoœci PenPos do punktu (X, Y)

Uwaga: Metoda zmienia wartoœæ w³asnoœci PenPos– bêdzie ona okreœla³a punkt ( X, Y).

DEL-6(40 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metoda Polyline

procedure Polyline (Points : array of TPoint);

– narysowanie ci¹gu odcinków przy u¿yciu bie¿¹cegopióra

Uwagi: 1) Metoda nie zmienia wartoœci w³asnoœciPenPos.

2) Aby narysowaæ wielok¹t, pierwszy punktmusi byæ identyczny z ostatnim.

DEL-6(41 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metoda Arc

procedure Arc (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

– narysowanie ³uku elipsy ograniczonej przez podanyprostok¹t

Elipsa jest ograniczona przez prostok¹t (znajduje siê w prostok¹cie) o przeciwleg³ych wierzcho³kach (zwykle: lewymgórnym i prawym dolnym) o wspó³rzêdnych ( X1, Y1) i (X2, Y2).

DEL-6(42 z 68)

£uk jest rysowany w kierunku przeciwnym do ruchuwskazówek zegara od punktu pocz¹tkowego do koñcowego.Punkt pocz¹tkowy jest punktem przeciêcia elipsy oraz prostejprzechodz¹cej przez œrodek elipsy i punkt o wspó³rzêdnych(X3, Y3), a punkt koñcowy – punktem przeciêcia elipsy i prostej przechodz¹cej przez œrodek elipsy i punkt ( X4, Y4).

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metoda Arc

procedure Arc (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

– narysowanie ³uku elipsy ograniczonej przez podanyprostok¹t

(X1, Y1)

(X2, Y2)

(X3, Y3)

(X4, Y4)

DEL-6(43 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metody PolyBezier i PolyBezierTo

procedure PolyBezier (const Points : array of TPoint);

– narysowanie zestawu krzywych BézieraMetoda ta powoduje narysowanie krzywych Béziera trzeciegostopnia u¿ywaj¹c punktów pocz¹tkowego, koñcowego i kontrolnych okreœlonych parametrem Points.Pierwsza krzywa jest rysowana od pierwszego punktu doczwartego, a punkty drugi i trzeci s¹ jej punktami kontrolnymi.

Ka¿da kolejna krzywa wymaga trzech nastêpnych punktów:dwóch punktów kontrolnych i punktu koñcowego (zapocz¹tkowy punkt tej krzywej przyjmuje siê punkt koñcowypoprzedniej krzywej).

DEL-6(44 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metody PolyBezier i PolyBezierTo

procedure PolyBezier (const Points : array of TPoint);

– narysowanie zestawu krzywych Béziera

Points[0]Points[1]

Points[2]

Points[3]

Points[4]

Points[5]

Points[6]

DEL-6(45 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metody PolyBezier i PolyBezierTo

procedure PolyBezier (const Points : array of TPoint);

– narysowanie zestawu krzywych Béziera

Uwaga: Do przekazania tablicy punktów do metodyPolyBezier jest wygodne u¿ywanie funkcjiSlice. Na przyk³ad, w celu przekazaniapierwszych 10 punktów z tablicy PointArraymo¿na zastosowaæ wywo³anie

Canvas.PolyBezier (Slice(PointArray, 10)) ;

DEL-6(46 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie krzywych – metody PolyBezier i PolyBezierTo

procedure PolyBezierTo (const Points : array of TPoint);

– narysowanie zestawu krzywych Béziera i uaktualnienie wartoœci w³asnoœci PenPos

Rysowanie – jak poprzednio.Po zakoñczeniu rysowania w³asnoœci PenPos przypisuje siêwartoœæ ostatniego punktu koñcowego.

DEL-6(47 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Rectangle

procedure Rectangle (X1, Y1, X2, Y2 : Integer); overload;

procedure Rectangle (const Rect : TRect);overload;

– narysowanie prostok¹taProstok¹t jest rysowany lini¹ okreœlon¹ wartoœci¹ w³asnoœciPen i wype³niany wzorcem okreœlonym przez wartoœæw³asnoœci Brush.

(X1, Y1)

(X2, Y2)

PenBrush

DEL-6(48 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda RoundRect

procedure RoundRect (X1, Y1, X2, Y2, X3, Y3 : Integer);

– narysowanie „prostok¹ta” o zaokr¹glonychnaro¿nikach

Figura jest rysowana lini¹ okreœlon¹ przez wartoœæ w³asnoœciPen i wype³niana wzorcem okreœlonym przez wartoœæw³asnoœci Brush.

DEL-6(49 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda RoundRect

procedure RoundRect (X1, Y1, X2, Y2, X3, Y3 : Integer);

– narysowanie „prostok¹ta” o zaokr¹glonychnaro¿nikach

Naro¿nikami „prostok¹ta” s¹ punkty o wspó³rzêdnych ( X1, Y1),(X2, Y1), (X2, Y2) i (X1, Y2). Naro¿niki s¹ zaokr¹glone w takisposób, ¿e odpowiada to elipsie o szerokoœci X3 i wysokoœciY3.

(X1, Y1)

(X2, Y2)X3

X3

Y3Pen

DEL-6(50 z 68)

Brush

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda FrameRect

procedure FrameRect (const Rect : TRect);

– narysowanie prostok¹ta bez wype³niania jegownêtrza

Rect.TopLeft

Rect.BottomRight

Brush

Uwaga: Brzeg prostok¹ta jest zaznaczony wzorcemokreœlonym przez wartoœæ w³asnoœci Brush.Aby narysowaæ ten brzeg wzorcem pióra,nale¿y zastosowaæ metodê Polygon.

DEL-6(51 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Polygon

procedure Polygon (Points : array of TPoint);

– narysowanie ci¹gu odcinków wraz z po³¹czeniemkoñca ostatniego z pocz¹tkiem pierwszego

Powsta³y wielok¹t jest wype³niany wzorcem okreœlonym przezwartoœæ w³asnoœci Brush. Brzeg wielok¹ta jest rysowany lini¹okreœlon¹ przez wartoœæ w³asnoœci Pen.

Points[0]

Points[1]

Points[2]Points[3]

Points[4]

Pen Brush

Uwaga: Aby narysowaæ wielok¹t bez wype³nienia,nale¿y zastosowaæ metodê Polyline. DEL-6(52 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Ellipse

procedure Ellipse (X1, Y1, X2, Y2 : Integer); overload ;

procedure Ellipse (const Rect : TRect); overload;

– narysowanie elipsy ograniczonej przez podanyprostok¹t

Wspó³rzêdne lewego górnego naro¿nika ograniczaj¹cegoprostok¹ta s¹ równe ( X1, Y1), a prawego dolnego – ( X2, Y2)(wspó³rzêdne te mo¿na tak¿e okreœliæ za pomoc¹ rekorduRect).Brzeg elipsy jest zaznaczony lini¹ okreœlon¹ wartoœci¹w³asnoœci Pen, a wnêtrze wype³nione wzorcem okreœlonymprzez wartoœæ w³asnoœci Brush.

DEL-6(53 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Ellipse

procedure Ellipse (X1, Y1, X2, Y2 : Integer); overload ;

procedure Ellipse (const Rect : TRect); overload;

– narysowanie elipsy ograniczonej przez podanyprostok¹t

(X1, Y1)

(X2, Y2)

Pen Brush

DEL-6(54 z 68)

Uwaga: Jeœli prostok¹t ograniczaj¹cy jestkwadratem, to zostanie narysowane ko³o.

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Chord

procedure Chord (X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Integer);

– narysowanie odcinka elipsy ograniczonej przezpodany prostok¹t

Sposób rysowania – jak w metodzie Arc. Koñce powsta³ego³uku s¹ ³¹czone odcinkiem.

DEL-6(55 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Chord

(X1, Y1)

(X2, Y2)

(X3, Y3)

(X4, Y4)

procedure Chord (X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Integer);

– narysowanie odcinka elipsy ograniczonej przezpodany prostok¹t

DEL-6(56 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Pie

procedure Pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Longint);

– narysowanie wycinka elipsy

Elipsa jest okreœlona przez ograniczaj¹cy j¹ prostok¹t o wierzcho³kach (X1, Y1) i (X2, Y2).

Rysowany wycinek jest ograniczony dwoma liniamiprzechodz¹cymi przez œrodek elipsy i punkty o wspó³rzêdnych(X3, Y3) i (X4, Y4).Brzeg wycinka jest rysowany lini¹ okreœlon¹ przez wartoœæw³asnoœci Pen, a wype³niany wzorcem okreœlonym przezwartoœæ w³asnoœci Brush.

DEL-6(57 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Rysowanie figur – metoda Pie

(X1, Y1)

(X2, Y2)

(X3, Y3)

(X4, Y4)

procedure Pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4 : Longint);

– narysowanie wycinka elipsy

Pen

Brush

DEL-6(58 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Wype³nianie obszarów – metoda FillRect

procedure FillRect (const Rect : TRect);

– wype³nienie prostok¹ta okreœlonego parametremRect wzorcem okreœlonym wartoœci¹ w³asnoœciBrush

Rect.TopLeft

Rect.BottomRight

Brush

DEL-6(59 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Wype³nianie obszarów – metoda FloodFill

procedure FloodFill (X, Y : Integer; Color : TColor; FillStyle : TFillStyle);

– wype³nienie powierzchni rysowania wzorcemokreœlonym wartoœci¹ w³asnoœci Brush

Definicja typu TFillStyle (w module Graphics):

type TFillStyle = (fsSurface, fsBorder);

Granice obszaru wype³niania okreœla parametr Color.Wype³nianie rozpoczyna siê (we wszystkich kierunkach) odpunktu (X, Y).

DEL-6(60 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Wype³nianie obszarów – metoda FloodFill

procedure FloodFill (X, Y : Integer; Color : TColor; FillStyle : TFillStyle);

Parametr FillStyle okreœla sposób interpretacji parametruColor:fsSurface – wype³nienie obszaru o kolorze okreœlonym

przez parametr Color i zatrzymanie procesu w miejscu wyst¹pienia innego koloru,

fsBorder – wype³nienie obszaru o kolorze innym ni¿ Color i zatrzymanie procesu w miejscu wyst¹pieniakoloru okreœlonego parametrem Color.

Uwaga: Kolor w punkcie (X, Y) mo¿na okreœliæ za pomoc¹w³asnoœci Pixels.

DEL-6(61 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Wypisywanie tekstu – metoda TextOut

procedure TextOut (X, Y : Integer; const Text : string);

– wypisanie podanego ³añcucha od punktu (X, Y), a nastêpnie uaktualnienie wartoœci w³asnoœciPenPos zgodnie z koñcowym punktem tekstu

DEL-6(62 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Wypisywanie tekstu – metoda TextRect

procedure TextRect (Rect : TRect; X, Y : Integer; const Text : string);

– wypisanie podanego ³añcucha wewn¹trz prostok¹taobciêcia Rect

Punkt (X, Y) okreœla lewy górny naro¿nik tekstu.Tekst, który nie mieœci siê w prostok¹cie Rect zostanieobciêty.

DEL-6(63 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Wypisywanie tekstu – metody TextHeight i TextWidth

function TextHeight (const Text : string) : Integer;

– uzyskanie informacji o wysokoœci (w pikselach)podanego ³añcucha wzglêdem bie¿¹cego kroju

function TextWidth (const Text : string) : Integer;– uzyskanie informacji o szerokoœci (w pikselach)

podanego ³añcucha wzglêdem bie¿¹cego kroju

DEL-6(64 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Kopiowanie rysunku – metoda CopyRect

procedure CopyRect (Dest : TRect; Canvas : TCanvas; Source : TRect);

– skopiowanie czêœci obrazu z jednej powierzchnirysowania na inn¹

Dest – okreœla prostok¹t bie¿¹cej powierzchni (typuTCanvas), na któr¹ zostanie skopiowany rysunek,

Canvas – okreœla powierzchniê, z której rysunek zostaniepobrany,

Source – okreœla prostok¹t rysunku na powierzchniokreœlonej parametrem Canvas.

Uwaga: Podczas kopiowania uwzglêdnia siê wartoœæw³asnoœci CopyMode bie¿¹cej powierzchni. DEL-6(65 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Do³¹czanie rysunków – metody Draw i StretchDraw

procedure Draw (X, Y : Integer; Graphic : TGraphic);

– wprowadzenie rysunku okreœlonego przez parametrGraphic na bie¿¹c¹ powierzchniê rysowania

Metoda ta wywo³uje metodê Draw rysunku okreœlonegoparametrem Graphic. Rysunek jest umieszczany w takisposób, ¿e jego lewy górny naro¿nik na bie¿¹cej powierzchnirysowania bêdzie znajdowaæ siê w punkcie ( X, Y).

Rysunkiem mo¿e byæ mapa bitowa (ang. bitmap), piktogram(ang. icon) lub metazbiór (ang. metafile).

Uwaga: Jeœli rysunkiem jest mapa bitowa, to uwzglêdnia siêwartoœæ w³asnoœci CopyMode.

DEL-6(66 z 68)

Elementy jêzyka Delphi Pascalzwi¹zane z grafik¹

Do³¹czanie rysunków – metody Draw i StretchDraw

procedure StrechDraw (const Rect : TRect; Graphic : TGraphic);

– wprowadzenie rysunku okreœlonego przez parametrGraphic w prostok¹cie okreœlonym parametremRect

Metoda ta wywo³uje metodê Draw obiektu Graphic, któregorozmiar okreœla sposób „dopasowania siê” do prostok¹ta(otrzymany rysunek mo¿e byæ zmniejszony, powiêkszony lubmieæ zmieniony stosunek wysokoœci do szerokoœci.

Rysunkiem mo¿e byæ mapa bitowa, piktogram lub metazbiór.

Uwaga: Jeœli rysunek jest map¹ bitow¹, to zostanieuwzglêdniona wartoœæ w³asnoœci CopyMode.

DEL-6(67 z 68)

to wcale nie jesttakie trudne ...

DEL-6(68 z 68)