![]() |
Mini-Paint - Rechtecke ziehen
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:
Vielen Dank schonmal im Voraus !!!!
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; |
Re: Mini-Paint - Rechtecke ziehen
Habs jetzt nur überflogen. Kann es sein, dass du BTRechteckungefuellt zweimal auf False überprüfst? :stupid:
Tipp1: auf true oder false überprüfen ist doppelt gemoppelt. Du kannst das direkt so schreiben. Tipp2: Wenn du einrückst, kannst du deinen eigenen Code auch nachher noch lesen :mrgreen:
Delphi-Quellcode:
LG Isilive
procedure TPaint.BildMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin with Bild.Canvas do begin if not(BtRechteck.Enabled) then if MausGedrueckt then if BtRechteckungefuellt.Enabled 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 else 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 end; end; |
Re: Mini-Paint - Rechtecke ziehen
ja, danke, dass macht das ganze ein bisschen übersichtlicher :D:D
Aber wie bekomme ich denn jetzt die "gezogenen" Rechtecke hin? :wiejetzt: |
Re: Mini-Paint - Rechtecke ziehen
|
Re: Mini-Paint - Rechtecke ziehen
ja, nur leider habe ich dort die Antwort auch nicht gefunden! :wiejetzt:
|
Re: Mini-Paint - Rechtecke ziehen
Hast Du Dir einmal dieSeiten 7-24 bis 7-28 in dem Entwicklerhndbuch angeschaut?
da steht eigentlich alles drin was Du benötigst. Gruß K-H |
Re: Mini-Paint - Rechtecke ziehen
Da schickt man durch die Blume einen Link zum Entwicklerhandbuch und dann wird das nichtmal gelesen :?
|
Re: Mini-Paint - Rechtecke ziehen
Ja, habe ich :D Das wusste ich auch schon alles mit den Parametern und 3 Prozeduren und so.
Ich habe es auch versucht umzusetzen, aber nicht geschafft, eine Gummilinie für ein Rechteck zu machen. Für eine normale Linie heb ich es geschafft, allerdings als ich versuchte nach dem gleichen Muster bei dem Rechteck vorzugehen, kam das oben genannte (Delphi-Quelltext) heraus. Vielen Dank im Voraus!!! :wiejetzt: :wiejetzt: |
Re: Mini-Paint - Rechtecke ziehen
Aufbauend auf dem Code aus dem Entwicklerhandbuch:
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin Drawing := true; Origin := Point(X,Y); end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Drawing then begin Canvas.Pen.Mode := pmNotXor; Canvas.Pen.Style := psDot; Canvas.Rectangle(Origin.X,Origin.Y,MovePt.X,MovePt.Y); Canvas.Rectangle(Origin.X,Origin.Y,X,Y); end; MovePt := Point(X,Y); Canvas.Pen.Mode := pmCopy; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Drawing := false; end; |
Re: Mini-Paint - Rechtecke ziehen
eine frage noch:
sind MovePt und Origin Variablen vom Typ Tpoint? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz