Autor Beitrag
frindo
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 19.11.05 19:16 
Hallo,

ich hatte vor mit canvas.moveto und lineto eine Linie malen zu lassen(auf die Form).
Wie kann ich diese Linie wieder verschwinden lassen?
Habe schon gesucht aber canvas.free geht irgendwie nicht(viell. hab ich auch nur den syntax nicht verstanden?).
Mein plan war zuerst diese Linie zeichnen zu lassen, dann die nächste daran anschließende zu zeichnen und die vorherige linie löschen usw.

hoffe ich konnte das richtig rüberbringen :)
Danke schonmal im voraus.
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: Sa 19.11.05 20:25 
erst mal :welcome: im DF !

du kannst ja die linie einfach "übermalen"

schwarze linie auf weisen grund malen... und du übermalst die schwarze linie einfach mit ner weißen :wink:

_________________
GEIZ IST GEIL! - Ihr Sozialamt
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Sa 19.11.05 20:42 
wenn du alles löschen willst nich nur eine linie wie wäre es mit refresh oder clear (bin mir nicht sicher wie die beiden befehle wirken müsste ich testen. aber kannst du ja auch machen)

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
frindo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 19.11.05 21:10 
user profile iconstarsurfer hat folgendes geschrieben:
erst mal :welcome: im DF !

du kannst ja die linie einfach "übermalen"

schwarze linie auf weisen grund malen... und du übermalst die schwarze linie einfach mit ner weißen :wink:


Danke für die Begrüßung und die schnelle Antwort. Das mit dem übermalen hab ich mir auch überlegt, wäre halt schön gewesen wenns da ne elegantere Lösung gäb.

user profile iconAmateur hat folgendes geschrieben:
wenn du alles löschen willst nich nur eine linie wie wäre es mit refresh oder clear (bin mir nicht sicher wie die beiden befehle wirken müsste ich testen. aber kannst du ja auch machen)


Bin aus der Delphi-Hilfe zu den Begriffen nicht schlau geworden und so wie ich sie angewendet habe haben sie nicht funktioniert :). Ist jetzt aber auch egal, ich nehm dann die erste Lösung.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Sa 19.11.05 22:06 
mh clear gibts hier nicht aber mit form1.refresh wird das form neu gezeichnet und damit verschwindet das canvas zeug... probiers aus. ist einfacher als nachmalen

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
frindo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 20.11.05 00:55 
user profile iconAmateur hat folgendes geschrieben:
mh clear gibts hier nicht aber mit form1.refresh wird das form neu gezeichnet und damit verschwindet das canvas zeug... probiers aus. ist einfacher als nachmalen


Danke, habs grad gelesen. Hatte es jetzt schon mit nachmalen gemacht, war ne gute Übung in delphi(und hat 3 Stunden gedauert XD).
Ikarus7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Fr 09.12.05 20:02 
bei mir geht das irgendwie auch mit refresh nicht weg .... was kann ich tun ? bitte mit code ...
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: Fr 09.12.05 20:07 
Das könntest Du z.B. so hier machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Procedure ClearCanvas(C: TCanvas);
begin
    C.FillRect(C.ClipRect);
end;


wodurch das Canvas mit der aktuellen Brush-Farbe (IIRC) übermalt wird.

_________________
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.
Ikarus7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Fr 09.12.05 22:46 
das bewirkt bei mir nur, daß mein bildschirm ausser meinem canvas weiss gefüllt wird :)
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 11.12.05 19:44 
auf was zeichnest du denn mit canvas??? auf die form oder auf was anderes???
wenn auf die form sollte es mit form1.refresh oder form1.repaint weggehen es sein denn du hast was an den methoden verändert oder so.
wenn du auf nen image zeichnest solltest du es da mal mit image1.refresh oder so versuchen...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 11.12.05 20:07 
ab delphi6 sollte das ungefähr so gehen:
ausblenden Delphi-Quelltext
1:
image1.picture.bitmap := nil;					
Ikarus7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Mo 12.12.05 16:21 
hier mein code :
ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
procedure WriteText(TransText: string);
var
  MyHand: HWND;
  MyDc: HDC;
  MyCanvas: TCanvas;
begin

        Form1.Refresh;
  MyHand := GetDesktopWindow;
  MyDc := GetWindowDC(MyHand);

  MyCanvas := TCanvas.Create;

  MyCanvas.Handle := MyDC;
  BeginPath(MyCanvas.Handle);
  MyCanvas.Font.Color := clBlue;
  MyCanvas.Font.Name := 'Courier New';
  MyCanvas.Font.Size := 30;
  SetBkMode(MyCanvas.Handle,TRANSPARENT);
        MyCanvas.Refresh;
   EndPath(MyCanvas.Handle);
  if transtext='assi' then  begin
       MyCanvas.TextOut(800900'hallo') ;
             MyCanvas.Refresh;    MyCanvas.Refresh;
       end
  else
     begin
   //   MyCanvas.FillRect(MyCanvas.ClipRect);
     MyCanvas.TextOut(750900, TransText); //Hier die Positionsdaten mit X und Y, wo der Text beginnen soll
          end;


end;


ich rufe ihn mit einem timer auf.
wenn der timer aufhört, sollte der text weggehen (bei übergabe von "assi")