Autor Beitrag
max120b
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WinXP, Linux 9.0
Delphi 2005 Professional
BeitragVerfasst: Fr 29.12.06 16:57 
Hallo.


Ich habe filgendes Problem:

Ich lasse mir auf dem Desktop mit Canvas einen Text ausgeben. Da der text jedoch reltiv schnell hintereinander ausgegeben wird überlagert der neue Text den alten. Gibt es dafür eine Lösung?

Alle 0,5 Sec den Desktop zu aktualisieren ist jedenfalls noch nicht das optimum :roll:

Kann man den Text vielleicht einfach nochmal ohne Farbe also Transparent drüberschreiben oder sowas?


Danke, Max120b
Jetstream
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222



BeitragVerfasst: Fr 29.12.06 18:21 
Naja, da du direkt auf den Hintergrund zeichnest, müsstest den kompletten Hintergrund neu zeichnen, um den Text zu löschen. Kannst du nicht einfach ein größtenteils transparentes Fenster zum zeichnen nehmen?

_________________
Die folgenden Klangbeispiele sind Ergänzungen zum methodischen Aufbau der Textbeilage und dürfen nicht losgelöst von dieser behandelt werden.
max120b Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WinXP, Linux 9.0
Delphi 2005 Professional
BeitragVerfasst: Sa 30.12.06 20:13 
hmm wäre ne Möglichkeit nur vermutlich switcht Windows dann ja aud dem aktiven Programm raus , wenn ich die Form anzeigen lasse.

Ich kennt das vielleicht von den Logitech-Applikationen. Wenn man die Lautsärke mit der Tastatur verändert, etc gibts immer am unteren Bildschirmrand ne Textmeldung...sowas solls bei mir auch werden (in der Richtung jedenfalls ^^)

Ich hab hier mal den Code gepostet mit dem ich das mache:
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:
Procedure draw_action(action:String; farbe:TColor; groesse:Integer; brush_style:TBrushStyle);

var cvs: TCanvas; DHandle: HWND;

begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     cvs:=TCanvas.Create;
     try
       cvs.Handle:=DHandle;
       cvs.Font.Color:=farbe;
       cvs.Font.Size:=groesse;
       cvs.Brush.Style:=brush_style;
       cvs.TextOut(25, Screen.Height-(groesse*2), action);
     finally
       cvs.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
        RaiseLastOSError;
    end;
 end
 else
   RaiseLastOSError;
end;


vielleicht hat jemdand ne idee wie man sowas machen kann

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Sa 30.12.06 21:14 
Mit FormStyle:=FsStayOnTop; switched windows da garnix weg ... Problem is nur: wenn du ne DirectX oder OpenGl Anwendung (also n Spiel) am laufen hst, dann is da nix mehr mit Canvas und so

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Sa 30.12.06 21:42 
Eine Möglichkeit ist vielleciht sich den Hintergrund zu merken der übermalt wird. Aus Performancegründen würde ich das komplette Rechteck um den Text verwenden. Ist nur so eine schnelle Idee