Hallo,
wie Thomas bereits geschrieben hatte, ist es besser
in der Paint Methode (onPaint Ereignis) zu malen und mit invalidate den Paintbox Inhalt
zu löschen. Es wird dann automatisch ein Neuzeichnen angestossen.
Delphi-Quellcode:
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1Paint(Sender: TObject);
private
startX, startY, endX, endY: Integer;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
startX := x;
startY := y;
end;
procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
endX := x;
endY := y;
invalidate;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with (sender as TPaintbox) do
begin
Canvas.MoveTo(startx,startY);
Canvas.Rectangle(endX,endY,startX,startY);
end;
end;
Grüße
Klaus