Einzelnen Beitrag anzeigen

Dellphi

Registriert seit: 5. Nov 2009
23 Beiträge
 
#1

Mini-Paint - Rechtecke ziehen

  Alt 4. Mär 2010, 16:37
Hallo!

Ich habe ein kleines Problem mit meinem Mini-Paint Programm, welches ich zur Zeit programmiere:

Ich wollte ein Rechteck programmieren, dass man wie im echten Paint aufziehen kann.
Dies ist mir auch gelungen, sogar mit Fallunterscheidung für gefüllt und ungefüllt, aber man sieht während des Ziehens des Rechtecks nichts.
Wie kann ich das ändern?

Hier mein Quelltext:

Delphi-Quellcode:
procedure TPaint.BildMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     with Bild.Canvas do begin
     if BtRechteck.Enabled=False
     then begin
     if BtRechteckungefuellt.Enabled=False
     then begin
          Brush.Style:=bsclear;
          XAnfang:=X;
          YAnfang:=Y;
          XEnde:=X;
          YEnde:=Y;
          Moveto (XAnfang,YAnfang);
     end;
     if BtRechteckgefuellt.Enabled=False
     then begin
          Brush.Style:=bssolid;
          XAnfang:=X;
          YAnfang:=Y;
          XEnde:=X;
          YEnde:=Y;
          Moveto (XAnfang,YAnfang);
     end;
     end;
     end;
end;

procedure TPaint.BildMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     with Bild.Canvas do begin
     if BtRechteck.Enabled=False
     then begin
     if MausGedrueckt=True
     then begin
     if BtRechteckungefuellt.Enabled=False
     then begin
     Brush.Style:=bsclear;
     Pen.mode := pmnotxor;
     Moveto (XAnfang,YAnfang);
     Rectangle (xanfang,yanfang,xende,yende);
     Pen.style := psdot;
     Moveto (XAnfang,YAnfang);
     Rectangle (xanfang,yanfang,x,y);
     XEnde:=X;
     YEnde:=Y;
     end;
     if BTRechteckgefuellt.Enabled=False
     then begin
     Brush.Style:=bssolid;
     Pen.mode := pmnotxor;
     Moveto (XAnfang,YAnfang);
     Rectangle (xanfang,yanfang,xende,yende);
     Pen.style := psdot;
     Moveto (XAnfang,YAnfang);
     Rectangle (xanfang,yanfang,x,y);
     XEnde:=X;
     YEnde:=Y;
     end;
     end;
     end;
     end;
end;

procedure TPaint.BildMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     with Bild.Canvas do begin
     MausGedrueckt:=False;
     if BtRechteck.Enabled=False
     then begin
     if BtRechteckungefuellt.Enabled=False
     then begin
          Brush.Style:=bsclear;
          Pen.mode := pmcopy;
          Pen.Style := pssolid ;
          Xende := x;
          YEnde := y;
          Rectangle(XAnfang, YAnfang, X, Y);
     end;
     if BTRechteckgefuellt.Enabled=False
     then begin
          Brush.Style:=bssolid;
          Pen.mode := pmcopy;
          Pen.Style := pssolid ;
          Xende := x;
          YEnde := y;
          Rectangle(XAnfang, YAnfang, X, Y);
     end;
     end;
     end;
end;
Vielen Dank schonmal im Voraus !!!!
  Mit Zitat antworten Zitat