Rozdział 13
[ Powrót ]
Pamiętasz jak w Rozdziale 11 pisałem o funkcji DrawText? Nie wspomniałem wówczas o tym, że funkcja ta posiada jeszcze jedną fajną rzecz:
var
R : TRect;
begin
R := Rect(100,100,120,120);
DrawText(Canvas.Handle,
'To jest długi tekst, który może się nie zmieścić.',
-1, R, DT_END_ELLIPSIS);
Tekst zostanie wówczas "obcięty", a na końcu pojawi się symbol trzykropka. To jest długi tekst,...
Istnieje jeszcze jeden znacznik, mianowicie DT_CALCRECT. Powoduje on dopasowanie tekstu do szerokości i wysokości prostokąta:
var
R : TRect;
S : String;
begin
R := Rect(10,10,100,100); //Wymiary prostokąta
S := 'Barrrrrrrrrrrrdzzzooooooooooooo długiiiiiiii tekst, któryyyyy może się
nie zmieścić w jednej i '+
' dlatego zostanie umieszcony w kilku liniach'; //Tekst
DrawText(Canvas.Handle, PChar(S), -1, R, DT_CALCRECT or
DT_WORDBREAK);
Canvas.Recttangle(R.Left, R.Top, R.Right, R.Bottom);
//Narysowanie prostokąta o wymiarach podanych w zmiennej //Rect
DrawText(Canvas.Handl, PChar(S), -1,
DT_WORDBREAK);
end;
OBJAŚNIENIE: Omówię tutaj tylko te znaczniki których nie omawiałem w poprzednim rozdziale. Na początek zwróć uwagę na typ PChar. Funkcja DrawText wymaga rzutowania tekstu w postaci zmiennej PChar, a nie String. Zauważ także to, że dwa razy napisałem DrawText. Wymaż przedostanią linie, uruchom program i zobacz co się stało. Owszem jest prostokąt, tekst jest dopasowany, ale prostokąt jest za duży. Gdy napisz to jeszcze raz bez użycia DT_CALCRECT obszar prostokąta zostanie dopasowany do ilości linijek tekstu.
Bitmapy
Rysowanie bitmap nie jest trudne - spójrz na poniższy przykład:
var
Bitmap : TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('C:\obrazek1.bmp');
Bitmap.Draw(0,0,Bitmap);
Bitmap.Free;
end;
Na początku następuje stworzenie bitmapy, następnie załadowanie jej z określonej lokalizacji. Później następuje narysowanie bitmapy w lewym, górnym rogu. Na końcu następuje zwolnienie pamięci.
To jest dobry zposób jeżeli chcesz zachować domyślne rozmiary obrazka. Jeżeli chcesz mieć większą kontrole nad jego rozmiarem powinieneś zrobić raczej coś takiego:
var
Bitmap : TBitmap;
R : TRect;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('C:\obrazek1.bmp');
R :=
Rect(0,0,50,50);
Canvas.StretchDraw(R,Bitmap);
end;
W tym wypadku funkcja StretchDraw Rysuje bitmapę o określonych rozmiarach.
[ Powrót ]