Jak rysować za pomocą procedury?
2008-02-29
19:06:00
19:06:00
Wirus
Data publikacji:
20:06, 29 February 2008
20:06, 29 February 2008
Cześć Witam,
nie wiem czy dokładnie o to Ci chodzi, ale z rysowaniem w Delphi wiąże się pojęcie płótna (Canvas). Za jego pomocą dokonujemy wszelkich sztuczek graficznych. Musisz pamiętać, że jego elementy (Pen oraz Brush) zawsze oznaczają (odpowiednio) właściwości krawędzi (Pen) i właściwości wypełnienia (Brush). Mały przykład:
Postaw na formie przycisk, kliknij na niego dwukrotnie i w nowo-wygenerowanej procedurze wpisz:
var
x,y,szerokosc,wysokosc: integer;
begin
Canvas.Brush.Color := clRed; // Czerwone wnętrze
Canvas.Pen.Color := clBlue; // Niebieskie obramowanie
szerokosc := 200; // szerokość prostokąta
wysokosc := 200; // wysokosść prostokąta
x := 10; // pozycja w poziomie naszego prostokąta
y := 10; // pozycja w pionie naszego prostokąta
Canvas.Rectangle(x,y,x+szerokosc,y+wysokosc); // Rysuj prostokąt
Można robić ciekawe rzeczy, przykładowo: wpisać okrąg w kwadrat:
var
x,y,szerokosc,wysokosc: integer;
begin
Canvas.Brush.Color := clRed; // Czerwone wnętrze
Canvas.Pen.Color := clBlue; // Niebieskie obramowanie
szerokosc := 200; // szerokość prostokąta
wysokosc := 200; // wysokosść prostokąta
x := 10; // pozycja w poziomie naszego prostokąta
y := 10; // pozycja w pionie naszego prostokąta
Canvas.Rectangle(x,y,x+szerokosc,y+wysokosc); // Rysuj prostokąt
Canvas.Brush.Color := clYellow; // Żółte wnętrze
Canvas.Pen.Color := clBlack; // Czarne obramowanie
Canvas.Ellipse(x,y,x+szerokosc,y+wysokosc); // Rysuj elipse
Pozdrawiam!
Jeszcze wpadłem na jeden pomysł - mianowicie animacja:
var
x,y,szerokosc,wysokosc: integer;
bitmapa : TBitmap;
begin
bitmapa := TBitmap.Create; // tworzymy obiekt bitmapy
bitmapa.Width := 500; // szerokość tworzonej w pamięci bitmapy
bitmapa.Height := 500; // wysokość tworzonej w pamięci bitmapy
szerokosc := 200; // szerokość prostokąta
wysokosc := 200; // wysokosść prostokąta
// x := 10; // pozycja w poziomie naszego prostokąta
y := 10; // pozycja w pionie naszego prostokąta
for x:=10 To 100 Do // przesuń kwadrat w poziomie od x=10 do x=100
begin
// Usuwamy wszystko z bitmapy przed kolejną klatką filmu (jeśli tego nie zrobimy kolejne klatki filmu będą się nakładać)
bitmapa.Canvas.Brush.Color := clWhite; // ustaw kolor pióra (Pen - krawędzie) na biały
bitmapa.Canvas.Pen.Color := clWhite; // ustaw kolor pędzla (Brush - wypełnienie) na biały
bitmapa.Canvas.FillRect(Rect(0,0,bitmapa.Width,bitmapa.Height)); // usuń wszystko z bitmapy (wypełnia całą bitmapę kolorem określonym w Brush (wypełnienie) i Pen (krawędzie) )
// Rysujemy kwadrat
bitmapa.Canvas.Brush.Color := clRed; // Czerwone wnętrze
bitmapa.Canvas.Pen.Color := clBlue; // Niebieskie obramowanie
bitmapa.Canvas.Rectangle(x,y,x+szerokosc,y+wysokosc); // Rysuj prostokąt
bitmapa.Canvas.Brush.Color := clYellow; // Żółte wnętrze
Sleep(10); // czekaj 10 milisekund (bez tej instrukcji całość zaszłaby niezauważalnie szybko)
canvas.Draw(0,0,bitmapa); // wyświetlenie bitmapy na płótnie formularza
end;
bitmapa.Free; // zwolnienie bitmapy pamięciowej (obraz jest już narysowany na płótnie formularza więc jest niepotrzebna)
Pozdrawiam!
Zaloguj się aby dodać post.