Problem z OnPaint i Canvas

0

Czesc
Mam problem i nie wiem jak go rozwiazac. Rzecz polega na tym, ze rysuje po formie linie. Wspolrzedne poczatku i konca pobieram w onMouseDown i onMouseUp formy i to co narysuje znika. Wiem ze powinieniem to miec w onPaint, wtedy nie bedzie znikalo ale nie wiem jak polaczyc pobieranie wspolrzednych z onPaint. Mam funkcje rysujaca, ktora przyjmuje TPoint poczatku i konca. Moze mi ktos pomoc ?

Tak wyglada kod:
procedure TMDIChild.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.Pen.Style:=psSolid;
DrawShape(Origin, Point(X, Y), pmCopy);
draging:=false;

end;

procedure TMDIChild.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
DrawShape(Origin, MovePt, pmNotXor);
MovePt := Point(X, Y);
DrawShape(Origin, MovePt, pmNotXor);

end;

procedure TMDIChild.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.MoveTo(X, Y);
Canvas.Pen.Style:=psDot;
Origin := Point(X, Y);
MovePt := Origin;
draging:=true;

end;

procedure TMDIChild.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
if draging=true then
begin
Canvas.Pen.Mode := AMode;
Canvas.MoveTo(TopLeft.X, TopLeft.Y);
Canvas.LineTo(BottomRight.X, BottomRight.Y);
end;
end;

<ort>po prostu </ort>chce zeby to co narysuje nie znikalo ;) A i w onPaint mam juz cos narysowane ...

0

Moja sugestia: Zapisuj sobie współrzędne poszczególnych narysowanych linii i w onPaint je odtwarzaj. Możesz do tego zastosować na przykład tablicę dynamiczną składającą się z rekordów, z których każdy będzie zawierał dwa rekordy TPoint.

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