Autor Beitrag
einbrecher2007
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 06.12.09 23:38 
Hi,

ich zeichne mit Canvas folgendermaßen auf meinen Desktop:
ausblenden 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 user profile iconNarses: Code- durch Delphi-Tags ersetzt
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 07.12.09 17:33 
user profile iconeinbrecher2007 hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconeinbrecher2007 hat folgendes geschrieben Zum zitierten Posting springen:
Ist das überhaupt möglich?

Ja.

user profile iconeinbrecher2007 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 08.12.09 00:55 
user profile iconeinbrecher2007 hat folgendes geschrieben Zum zitierten Posting springen:
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 ;-))

user profile iconeinbrecher2007 hat folgendes geschrieben Zum zitierten Posting springen:
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.