[Lazarus] Canvas.Refresh Vyřešeno
Napsal: 01 bře 2013 22:35
Zdravím, potřeboval bych poradit.
Žil jsem v domění, že Canvas.Refresh smaže vše nakreslené přes Canvas (canvas.rectangle ; lineto ; ..). Dokonce to i fungovalo. Teď však mám už trochu jiný program a jednoduše mám 2 tlačítka.
Jedno:
Canvas.MoveTo(50,50);
Canvas.LineTo(75,75);
Druhé:
Canvas.Refresh;
A doufal jsem že po kliknutí na první se udělá primitivní čára (taky se udělá), ale po kliknutí na druhé se nesmaže. Potřeboval bych zjístit jak takto vytvořenou čáru smazat, aniž bych změnil pozadí.
---
Komplexněji to vypadá tak že bych chtěl na Form malovat obdelníky tak, že stisknutí myši zahájí kresbu, posunutí kreslí a upustění myši kresbu ukončí. Problém je v tom, že když se vracím zpět s myší, tak se původní obrazec přepisuje. Proto jsem chtěl vždy po posunutí myši smazat obraz a znovu ho vykreslit.
Něco jako
procedure TFormMapedit.FormMouseDown(X,Y: integer);
begin
kresli: true;
xpos := X;
ypos := Y;
end;
procedure TFormMapedit.FormMouseMove(X,Y: integer);
begin
if (kresli) then Canvas.Rectangle(xpos,ypos,X,Y);
end;
procedure TFormMapedit.FormMouseUp(X,Y: integer);
begin
kresli: false;
end;
Žil jsem v domění, že Canvas.Refresh smaže vše nakreslené přes Canvas (canvas.rectangle ; lineto ; ..). Dokonce to i fungovalo. Teď však mám už trochu jiný program a jednoduše mám 2 tlačítka.
Jedno:
Canvas.MoveTo(50,50);
Canvas.LineTo(75,75);
Druhé:
Canvas.Refresh;
A doufal jsem že po kliknutí na první se udělá primitivní čára (taky se udělá), ale po kliknutí na druhé se nesmaže. Potřeboval bych zjístit jak takto vytvořenou čáru smazat, aniž bych změnil pozadí.
---
Komplexněji to vypadá tak že bych chtěl na Form malovat obdelníky tak, že stisknutí myši zahájí kresbu, posunutí kreslí a upustění myši kresbu ukončí. Problém je v tom, že když se vracím zpět s myší, tak se původní obrazec přepisuje. Proto jsem chtěl vždy po posunutí myši smazat obraz a znovu ho vykreslit.
Něco jako
procedure TFormMapedit.FormMouseDown(X,Y: integer);
begin
kresli: true;
xpos := X;
ypos := Y;
end;
procedure TFormMapedit.FormMouseMove(X,Y: integer);
begin
if (kresli) then Canvas.Rectangle(xpos,ypos,X,Y);
end;
procedure TFormMapedit.FormMouseUp(X,Y: integer);
begin
kresli: false;
end;