Autor |
Beitrag |
einbrecher2007
Hält's aus hier
Beiträge: 8
|
Verfasst: So 06.12.09 23:38
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
einbrecher2007 
Hält's aus hier
Beiträge: 8
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|