Hi,
ich zeichne ein Viereck wenn ich die Mouse drücke. Wenn ich die Mouse bewege, dann soll das Viereck erweitert werden. Wenn ich die Mouse zurück bewege, passiert ein Grafikfehler: die anderen Rectangles sind noch vorhanden.
1. wie kann ich das beheben ?
2. wie kann ich es Regeln, den Startwert von der MouseDown-Position aus (wie in einem Strategiespiel) festzulegen, damit das Viereck auch von dem gewünschten Punkt aus gezeichnet wird ?
Der bisherige Code:
Delphi-Quellcode:
private
{ Private-Deklarationen }
mbdown : Boolean;
{ ... }
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mbdown := true;
end;
procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mbdown := false;
PaintBox1.Repaint;
end;
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if mbdown = True then
begin
PaintBox1.Canvas.Brush.Color := clBlack;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.Pen.Color := clWhite;
PaintBox1.Canvas.rectangle(Rect(0,0,x,y));
end;
end;
Wenn ich PaintBox1.Repaint verwende, dann flackert es.