Rozdział 11

 [ Powrót ]

 

W tym rozdziale zajmiemy się grafiką. Przy programowaniu grafiki wykorzystywać będziemy klasę TCanvas. Jeżeli chcesz np., aby na formularzu wyświetlił się tekst - robisz coś takiego:

Canvas.TextOut(50,50,'Napis nr 1');

Dwa pierwsze parametry to (jak nietrudno się domyśleć) współrzędne X i Y napisu. W apostrofie umieszczony jest tekst który będzie wyświetlany na formularzu. Powyższy kod podstaw do procedury OnPaint głównego formularza. Jeżeli teraz uruchomisz program zauważysz, że rzeczywiście tekst jest, ale na białym tle. Przyznasz, ze nie wygląda to zachęcająco. Aby temu zapowiedz należy ustawić tło na przeźroczyste. Zrób więc coś takiego:

Canvas.Brush.Style:=bsClear;
Canvas.TextOut(50,50,'Napis nr 2');

Zanim ruszymy dalej poznaj funkcję klasy TCanvas.

Brush

Kolor stosowany do wypełniania figur lub kolor pędzla.

Pen

Określa styl i kolor linii.

PenPos

Zawiera pozycje rysowania wyrażoną za pomocą X i Y

BrushCopy

Wyświetla bitmapę z przeźroczy tym tłem.

Elipse

Rysuje elipse

LineTo

Rysuje linie od punktu X do punktu Y

MoveTo

Wyznacza pozycję punktu rysowania.

Rectangle

Rysuje prostokąt.

RoundRect

Rysuje prostokąt z zaokrąglonymi narożnikami.

TextOut

Wpisuje tekst na płótnie.

Oczywiście to tylko podstawowe funkcje. W procedurze np. OnPaint napisz słowo 'Canvas' i postaw kropkę. Poczekaj chwilę, powinna ukazać się lista z dostępnymi funkcjami. 

Poeksperymentuj trochę z komponentem Shape (na palecie Additional). Możesz tam spokojnie dobierać kolory, style itp.

Oczywiście możesz także wyświetlić bitmapę i na niej umieścić jakiś tekst. 

  var
    
MojStyl  : TBrushStyle;
     Bitmap:   : TBitmap;

begin

      Bitmap:=TBitmap.Create;
      Bitmap.LoadFromFile('C:\Image.bmp');
      Bitmap.Draw(10,10,Bitmap);

     MojStyle:=Canvas.Brush.Style;
            Canvas.Brush.Style:=bsClear;
                Canvas.TextOut(20,20,'Obrazek z wakacji :)');

    Canvas.Brush.Style:=MojStyl;
    Bitmap.Free;
        end;

Objaśnienie: Na początku deklarujemy dwie zmienne: MojStyl i Bitmap. Pierwsza linia po begin oznacza stworzenie bitmapy. Kolejna ma za zadanie załadować bitmapę z określonej lokalizacji. Kolejna umieszcza ją na formularzu (współrzędne w tym wypadku wynoszą 10 i 10). Poźniej zmiennej MojStyl zostaje przypisany dotychczasowy styl. Robi się to po to, aby później nie trzeba było przywracać domyślnych ustawień, gdy chcesz stworzyć napis o innym stylu. W przedostanie i przedprzedostaniej następuje przywrócenie starego stylu i zwolnienie pamięci.   

Funkcja DrawText

To jest trochę trudniejsza funkcja, której nie posiada klasa TCanvas.  Pozwala ona na wpisanie tekstu w prostokąt i wyśrodkowanie ją w pionie i w poziomie. Najpierw zerknij na poniższy kod, a później wytłumaczę o co tu chodzi.

procedure TForm1.FormPaint(Sender: TObject);
   var
     R:TRect;
  begin
      Canvas.Brush.Color:=clBlue;
      Canvas.Font.Color:=clWhite;

        R:=Rect(20,20,300,80);
          Canvas.Rectangle(20,20,300,80);
           DrawText(Canvas.Handle,
                                       'Funkcja DrawText',
             -1,R,DT_SINGLELINE or DT_VCENTER or DT_CENTER);
end;

Prawda, że bardziej skomplikowane? Zmienna typu Rect zawiera współrzędne prostokąta. Dwie pierwsze liczby określają współrzędne lewego górnego rogu, a dwie ostatnie prawego dolnego. Te współrzędne są wymagane, aby okreslić punkty w jakich wyświetlany będzie test. Następny parametr rysuje prostokąt na ekranie według powyższych wartości koloru wypełniania i czcionki. Następnie następuje narysowanie tekstu przy pomocy funkcji DrawText. Słowo Handle oznacza uchwyt urządzenia biblioteki Windows API. Omówienie tego w innych rozdziałach. Cyfra -1 oznacza liczbę znaków które zostaną wyświetlone. Wartość -1 oznacza wszystkie znaki. Kolejna wartość 'R' to wspomniany wcześniej prostokąt w którym narysowany będzie tekst. Ostatnie 3 parametry oznaczają wyświetlenie tekstu pośrodku w pionie i w poziomie oraz w jednej linii. To by było na tyle na dzień dzisiejszy. Dokończenie tego tematu kolejnym razem. Teraz zapraszam do następnego rozdziału w którym to zrobimy przeglądarke. 

 [ Powrót ]