Paint (malowanie w czasie rzeczywistym)

0

Witam.
Muszę zrobić program, coś w stylu painta. Malowanie pędzlem (w czasie rzeczywistym), rysowanie prostych, gumka, rysowanie figur (koło, kwadrat), dodawanie tekstu w wybranym wskaźnikiem miejscu, możliwość wyboru w jakim kolorze ma być pędzel. No i oczywiście zapis do pliku, utworzenia nowego pola do rysowania.

Nie bardzo jednak wiem jak się za to zabrać. Przeszukałem trochę google, ale nie znalazłem nic ciekawego... Jest jakiś komponent który do tego służy? Nauczyciel pokazał jedynie jak ma się prezentować efekt końcowy i nie omówił potrzebnych komponentów. Szukałem tez jakiś ciekawych e-booków na ten temat, ale również nic nie znalazłem.

Wiem jedynie jak narysować jakąś figurę, pokolorować ją kodem np.
canvas.rectangle(x1,y1,x2,y2)
canvas.lineTo(x1,y1);
canvas.MoveTo(x1,y1);

itd..

Za pomoc z góry dziękuję.

0

Użyj TImage, a dokładniej:
Image.Picture.Bitmap.Canvas.(tutaj już wiesz, co).
Potrzebujesz (komponenty):
TImage, TButton, TColorDialog, TBrain :D

PS: Nie omówił, ponieważ nie musiał.
Od tego się przecież ma mózg...

1

Ołówek możesz zrobić np. tak:

procedure TForm1.Image1MouseMove(Sender: TObject; var
  X, Y : Integer);
begin
  Image1.Picture.Bitmap.Canvas.Pixels[X, Y] := clBlack; //albo inny kolor
end;

W delphi jest komponent TColorGrind w zakładce Samples. Słóży do wybierana kolorów
Możesz go używać tak:

 Image1.Picture.Bitmap.Canvas.Pixels[X, Y] := ColorGrind1.ForeGroundColor; //Pierwszy kolor
 Image1.Picture.Bitmap.Canvas.Pixels[X, Y] := ColorGrind1.BackGroundColor; //Drugi kolor

Za to gumkę możesz zrobić tak:

// (OnMouseMove)//
with Image1.Picture.Bitmap.Canvas do  //instrukcja wiążąca with... do...
  begin
    Brush.Color := ColorGrind1.BackGroundColor;
    Pen.Color := ColorGrind1.BackGroundColor;
    Rectangle(X-3, Y-3, X+3, Y-3);  //Rectangle albo Elipse, jak wolisz.
  end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1