Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Canvas Rectangle mit MouseMove, MouseDown und MouseUp

  Alt 12. Aug 2005, 10:27
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.
Miniaturansicht angehängter Grafiken
rectangle_734.jpg  
  Mit Zitat antworten Zitat