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 ]