Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Paintbox Zeichnung löschen (https://www.delphipraxis.net/74755-paintbox-zeichnung-loeschen.html)

ferby 8. Aug 2006 12:01


Paintbox Zeichnung löschen
 
Hallo,

Ich zeichne auf einen TBitmap und lasse es dann im OnPaint ereignis auf eine TPaintBox Zeichnen.

Meine Frage: Wie bekomme ich die Zeichnung wieder weg???
Wenn ich PaintBox.Visible:=false setze, dann bleibt die Zeichnung noch immer....

Ich nehm mal an ich muss den Inhalt vom Bitmap löschen, aber wie?

Xyres 8. Aug 2006 12:05

Re: Paintbox Zeichnung löschen
 
also ich habe da immer einfach ein rechteck über die ganze zeichenfläche in der hintergrundfarbe gezeichnet. dann ist alles weg ^^.

mfg xyres

ferby 8. Aug 2006 12:10

Re: Paintbox Zeichnung löschen
 
Hallo,

ja die Möglichkeit habe ich auch gesehen,
aber es muss doch eine Möglichkeit geben einfach den Inhalt zu löschen,
ohne ihn zu überzeichnen... oder nicht?


Bzw. Was ist wenn ich den INhalt wirklich nur "unsichtbar" machen will, und nicht löschen, weil ich den Inhalt später noch brauche. Dann kann ich nicht einfach drücber Zeichnen.

Xyres 8. Aug 2006 13:15

Re: Paintbox Zeichnung löschen
 
sry.... da weiß ich jetzt auch nich weiter, dass wird aber sicher nich so einfach sein, denn du musst ja irgendwie dann auf die einzelnen zeichnungen ansprechen können .

oki 8. Aug 2006 13:23

Re: Paintbox Zeichnung löschen
 
Hi,

löschen mit Canvas.Fillrect(Rect) und Hintergrundfarbe. Neu anzeigen mit neu zeichnen; wie beim ersten mal.
"Unsichtbar machen" und neu anzeigen heißt auch nur neu zeichnen.

Gruß oki

ferby 8. Aug 2006 13:48

Re: Paintbox Zeichnung löschen
 
Hallo,

ok wenns anders nicht geht dann mach ich es so.

Habe es jetzt so gelöst

Delphi-Quellcode:
bm.Canvas.Brush.Color:=clblue;
bm.Canvas.Fillrect(bm.Canvas.ClipRect);


bm = TBitmap
clblue = Hintergrundfarbe

mimi 30. Sep 2006 18:02

Re: Paintbox Zeichnung löschen
 
es geht noch anders: einfach die größe der paintbox oder image auf 1,1 setzten und dann wieder zurück *G*

Muetze1 30. Sep 2006 19:46

Re: Paintbox Zeichnung löschen
 
Zitat:

Zitat von ferby
Delphi-Quellcode:
bm.Canvas.Brush.Color:=clblue;
bm.Canvas.Fillrect(bm.Canvas.ClipRect);

Das ist nicht ok - weil ClipRect den neu zu zeichnenden Bereich des Canvas angibt und dieses ist auch öfters kleiner als die Paintbox selber. Z.b. wenn du nur eine Ecke eines Fensters auf deine PaintBox schiebst und dann wieder wegbewegst oder minimierst. Nutze lieber bm.BoundsRect.

beastofchaos 26. Dez 2010 16:11

AW: Paintbox Zeichnung löschen
 
Das Thema ist vll sehr alt, aber das Problem ist das selbe.
Ich arbeite mit Delphi 7 und will für mein MSA-Referat in Informatik (bin Schüler) mit meinem Freund ein Minigolfprogramm bauen.

Mein Ziel ist es, zur Richtung- und Geschwindigkeitsberechnung eine Linie von der Maus zur Kugel zu erzeugen. Bisher hab ich immer mit einem image gearbeitet. Jetzt versuch ich es, wegen besserer Handhabung mit Bitmap und Paintbox. Bei image gab es den Befehl "image.picture:=Nil;". Gibnt es wirklich keinen Befehl heutzutage, der das auch mit einer Bitmap/Paintbos macht?
Hier mal der Quelltext:

Delphi-Quellcode:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if not Timer1.Enabled then begin
bmp.Canvas.Pen.Color:=ClWhite;
bmp.Canvas.brush.Color:=ClWhite;
bmp.Canvas.MoveTo(trunc(d-PaintBox1.Left),trunc(e-PaintBox1.top));
bmp.Canvas.LineTo(Maus.x,Maus.y);
PaintBox1.Repaint;
bmp.Canvas.Brush.Color:=clBlue;
bmp.Canvas.Pen.Color:=ClBlack;
Maus:=PaintBox1.ScreentoClient(Mouse.CursorPos);
d:=(x1+x2)/2;
e:=(y1+y2)/2;
bmp.Canvas.MoveTo(trunc(d-PaintBox1.Left),trunc(e-PaintBox1.top));
bmp.Canvas.LineTo(Maus.x,Maus.y);
bmp.Canvas.Ellipse(x1,y1,x2,y2);
PaintBox1.Repaint;
end;
end;
Wie ihr seht, übermalt er mit Weiß die alte Linie und berechnet die neue. Leider blinkt die Linie imemr wieder und auch ein kleiner Teil in der Kugel (auch in Paintbox gezeichnet). Die Kugel ist innen Blau und dauernd geht halt ein weißer Strich über eine bestimmte Stelle. Könnt euch das auch mal selbst anschauen, hier eine Zip-Satei mit allen Dateien: http://rapidshare.com/files/439357797/Test.zip

Bummi 26. Dez 2010 16:21

AW: Paintbox Zeichnung löschen
 
Ales was in einer Paintbox gemalt wir wird im OnPaint gemalt, dies ist im Idealfall ein Offscreenbitmap.
Das Malen kann mit Paintbox1.invalidate ausgelöst werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz