Entwickler-Ecke
Multimedia / Grafik - Canvas vom Desktop löschen
einbrecher2007 - So 06.12.09 23:38
Titel: Canvas vom Desktop löschen
Hi,
ich zeichne mit Canvas folgendermaßen auf meinen Desktop:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm1.Button1Click(Sender: TObject); var DCanvas: TCanvas; DHandle: HWND; begin DHandle:=GetDC(0); if DHandle<>0 then begin try DCanvas:=TCanvas.Create; try DCanvas.Handle:=DHandle; DCanvas.Pen.Color:=clRed; DCanvas.Font.Size:=72; DCanvas.Brush.Style:=bsClear; DCanvas.MoveTo(0,0); DCanvas.LineTo(500,500); finally DCanvas.Free; end; finally if ReleaseDc(0, DHandle)<>1 then RaiseLastOSError; end; end else RaiseLastOSError; end; |
Wenn ich diese Linie gezeichnet habe, wie kann ich sie dann wieder löschen?
Ist das überhaupt möglich?
Und noch eine Frage zu Canvas:
Beispiel: Ich ziehe eine Linie von (0,0) zu (115,203). Diese Linie soll jetzt aber gerade aus weiter gehen, und nicht bei (115,203) aufhören. Wie lässt sich sowas am besten umsetzen?
Vielen Dank
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
BenBE - Mo 07.12.09 17:33
einbrecher2007 hat folgendes geschrieben : |
Hi,
ich zeichne mit Canvas folgendermaßen auf meinen Desktop:
[...]
Wenn ich diese Linie gezeichnet habe, wie kann ich sie dann wieder löschen? |
Gar nicht.
Ja.
einbrecher2007 hat folgendes geschrieben : |
Und noch eine Frage zu Canvas:
Beispiel: Ich ziehe eine Linie von (0,0) zu (115,203). Diese Linie soll jetzt aber gerade aus weiter gehen, und nicht bei (115,203) aufhören. Wie lässt sich sowas am besten umsetzen?
Vielen Dank |
Dreisatz
einbrecher2007 - Di 08.12.09 00:13
Danke für die ausführliche Antwort.
Habe es inzwischen selbst gelöst.
Falls es noch jemanden interessiert:
1. Um die Linie unsichtbar zu machen, lege ich per Canvas.Draw einen Screenshot vom "sauberen" Desktop, den ich vor dem Zeichnen der Linie gemacht habe, über den bekritzelten.
2. Ich ziehe die Linie nicht mehr bis zu dem bestimmten Punkt, sondern berechne mit Hilfe der Differenz der beiden Punkte einen weiter entfernten Punkt mit dem gleichen Winkel.
BenBE - Di 08.12.09 00:55
einbrecher2007 hat folgendes geschrieben : |
Danke für die ausführliche Antwort.
Habe es inzwischen selbst gelöst.
Falls es noch jemanden interessiert:
1. Um die Linie unsichtbar zu machen, lege ich per Canvas.Draw einen Screenshot vom "sauberen" Desktop, den ich vor dem Zeichnen der Linie gemacht habe, über den bekritzelten. |
Das ist keine Lösung, das ist ein Würgaround ...
Wie von mir angedeutet, gibt es eine Möglichkeit, den Desktop zu refreshen; allerdings hattest du nicht danach gefragt (sondern nur nach deren Existenz ;-))
einbrecher2007 hat folgendes geschrieben : |
2. Ich ziehe die Linie nicht mehr bis zu dem bestimmten Punkt, sondern berechne mit Hilfe der Differenz der beiden Punkte einen weiter entfernten Punkt mit dem gleichen Winkel. |
Hatte ich geschrieben ... Nennt sich Dreisatz ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!