Grafika w delphi
Wiadomości teoretyczne na temat grafiki w języku Delphi - podstawowe właściwości klasy TCanvas
Operacje graficzne wykonujemy przez wykorzystanie właściwości i metod klasy TCanvas. Umożliwiają one:
określenie pióra do rysowania linii
określenie wypełniacza (pędzel) do wypełniania zamkniętych obszarów
wybór stylu, wielkości i rodzaju czcionki (zestaw czcionek taki jak w Windows)
rysowanie figur geometrycznych
odtwarzanie plików graficznych: bitmap, ikon, od wersji 4.0 także plików typu *-JPg
Właściwość Canvas (płótno) typu TCanvas mają na przykład formularze i komponent Image oraz zmienna Printer umożliwiająca wydruk na drukarce.
Procedury graficzne mogą być wywoływane w procedurach obsługi zdarzeń, jako reakcja na naciśnięcie przycisku, etykiety itp. Dla zadań związanych z formularzem, wywołanie procedur graficznych należy umieszczać w procedurze OnPaint. W innym przypadku efekty procedur nie będą na formularzu widoczne.
Ważniejsze typy danych stosowane w procedurach graficznych
Typ TPoint zawarty jest w module Windows. Definicja typu:
TPoint = record
X: Longint;
Y: Longint;
end;
Ten typ określa położenie punktu na ekranie względem lewego górnego rogu ekranu. Jest wykorzystywany w definicji innych typów.
Użyteczna jest funkcja Point, która zamienia parę liczb na typ TPoint.
Przykład:
Dla zmiennej P zadeklarowanej jako TPoint
P:=Point (10,10) ustawia nr pola rekordu P.
Typ TRect zawarty jest w module Windows. Definicja typu:
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
Typ ten przedstawia współrzędne przeciwległych wierzchołków prostokąta, które mogą być rozumiane jako cztery liczby lub dwie zmienne typu TPoint.
Użyteczna w określaniu zmiennych tego typu jest funkcja Rect, która przekształca cztery liczby typu integer na typ TRect.
Przykład:
Dla zmiennej R zadeklarowanej jako TRect
R := Rect (10,10,100,100); ustawia wartości pól w rekordzie R.
Często ze zmiennymi typu TRect stosowana jest funkcja GetClientRect, która zwraca w postaci typu TRect aktualnie używany obszar graficzny.
Typ TGraphic zawarty jest w module Graphics.
Reprezentuje pliki graficzne w postaci bitmap, ikon, metapliki. Występuje w opisie parametrów procedur graficznych, ale stosowanie egzemplarzy tego typu sprowadza się do typów podrzędnych reprezentujących konkretny typ graficzny: TBitmap, TIcon TMetafile.
Typ TBitmap zawarty jest w module Graphics.
Typ pochodzący od TGraphics, umożliwia wykonywanie operacji na plikach graficznych: ładowanie z dysku, zapisywanie na dysk, kopiowanie, dostosowanie obrazu do podanych rozmiarów, przenoszenie, zmianę trybu wyświetlania itp.
Ponieważ jest to typ wskaźnikowy, do utworzenia zmiennej typu TBitmap należy wywołać kreator, a do likwidacji zastosować na przykład metodę Free.
Przykład:
Var Obraz: TBitmap;
Begin
//utworzenie zmiennej wskaźnikowej
Obraz:=TBitmap.Create;
//tu następuje np. ładowanie bitmapy z dysku
Obraz. LoadFromFile ('C:\Windows\słomiana mata.bmp');
//tu można zastosować zmienną Obraz w procedurach graficznych.
//zwolnienie zmiennej Bitmap
Obraz.Free;
end;
Wybór koloru pióra i wypełniacza
Właściwość Color możemy ustawić dla linii figury - odwołujemy się wtedy poprzez właściwość Pen.Color. W przypadku koloru wypełniacza odwołujemy się przez właściwość Brush.Color, a w przypadku koloru czcionki przez Font.Color.
Przykłady:
Forml.Canvas.Pen.Color:=clRed;
Forml.Canvas.Brush.Color:=clRed;
Wyprowadzanie tekstu w grafice
Operacje tekstowe w grafice wykonujemy poprzez właściwość Font typu obiektowego TFont.
Podstawowe właściwości klasy TFont dotyczące czcionki:
Color - oznacza kolor czcionki.
Przykład: Canvas.Font.Color:=clGreen;
Height - wysokość czcionki w pikselach.
Przykład: Canvas. Font. Height:=30;
Size - wysokość czcionki w punktach
Przykład; Canvas.Font,Size;=60
Style - określa styl czcionki, jest to właściwość typu zbiorowego, więc wartości podajemy w nawiasach [,] oddzielone przecinkami.
Dopuszczalne wartości: fsBold - gruby, fsltalic - pochyły, fsUnderline - podkreślony, fsStrikeOut - przekreślony. ,
Przykład: Canvas.Font.Style:=[fsStrikeout.fsItalic]
Podstawowe metody klasy TFont dotyczące wyprowadzanego tekstu:
procedure TextOut(X,Y:Integer, s:PString) - wyprowadzanie łańcucha s od punktu o współrzędnych (X, Y).
Przykład: Canvas.TextOut(200,200,'To napis');
function TextExtent(const Text: String):TSize - zwraca w pikselach wysokość i szerokość łańcucha znaków. Typ TSize jest rekordem o dwu polach: cX, cY typu Longint.
Przykłady:
Canvas.TextOut(200,200,'x='+IntToStr(Canvas.TextExtent('Q').cX));
//szerokość
Canvas.TextOut(250,200,'y='+IntToStr(Canvas.TextExtent('Q').cY));
//wysokość
function TextHeight(const Text: String): Integer; - zwraca wysokość łańcucha tekstowego - tę samą wielkość otrzymujemy przy zastosowaniu metody TextExtend(S).cY
function TextWidth(const Text: String):Integer - zwraca długość łańcucha tekstowego - tę samą wielkość otrzymujemy przy zastosowaniu metody TextExtend(S).cX
procedure TextRect(R: TRect; X,Y: Integer; const Text: String) - wpisuje tekst do prostokątnego obszaru reprezentowanego zmienną R typu TRect. Położenie prostokąta ustala punkt (X, Y) - lewy górny róg. Początek tekstu jest w lewym górnym rogu prostokąta. Tekst zostaje obcięty do rozmiarów prostokąta.
Przykład:
Procedure Tform1.FormPaint(Sender:Tobject);
Var
R: TRect;
Begin
R:= Rect(10,10,100,100);
Form1.Canvas.TextRect(R,10,10,'Witaj'):
Form1.Carwas.FrameRect(R); //ramka wokół prostokąta
End;
Zadanie l
Wyświetl inicjały w czterech rogach formularza, w prostokącie umieszczonym w środku wyświetl nazwisko i imię.
Zadanie 2
Dodaj możliwość wpisywania wymiarów formularza i jego położenia. Wykorzystaj do wpisywania 4 okienka edycyjne Edit, 4 etykiety do opisu tych okienek Label, przycisk Button, który będzie zatwierdzał nowe położenie ramki.
3