zaaw ansow ane programow anie w (pakiecie) delphi · obiekty te (pióra) s¹ u¿ywane do rysowania...
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)