AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Text auf Desktop ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Text auf Desktop ausgeben

Offene Frage von "DavidKlimas"
Ein Thema von DavidKlimas · begonnen am 22. Mai 2007 · letzter Beitrag vom 22. Mai 2007
Antwort Antwort
DavidKlimas

Registriert seit: 24. Sep 2006
Ort: Arlon, Belgien
71 Beiträge
 
#1

Text auf Desktop ausgeben

  Alt 22. Mai 2007, 12:30
Einfaches resultat, schwieriger weg. Ich möchte einen beliebigen (veränderbaren) text automatisch auf dem Desktop ausgeben der lesbar ist, egal welchen Farbton das Hintergrundbild hat. D.H. schwarzer Text bei weissem Hintergrund, weisser Text bei schwarzen Hintergrund etc. Ich dachte daran, Das das programm vor dem Ausgeben des Textes die Stelle analysiert und ein Negativbild von dem Ausschnitt erstellt was dann als Textfarbe benutzt wird.

Wäre für Ratschläge oder andere Ansätze dankbar
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Text auf Desktop ausgeben

  Alt 22. Mai 2007, 12:33
schau mal nach pen.mode:=pmxor;
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#3

Re: Text auf Desktop ausgeben

  Alt 22. Mai 2007, 12:48
direktes malen auf den Desktop (getDC(0)) bringt viele Nachteile mit sich (evtl wird auf fenster gemalt, welches dann gf. verschoben wird...).
ich hab mir damals mti nem formular beholfen welches ich anhand von regions einem Schriftzug angepasst habe:
http://www.fw-web.de/download.php?fi.../units/OSD.zip

//edit:link korrigiert

HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Text auf Desktop ausgeben

  Alt 22. Mai 2007, 12:56
Erstmal sollte man klären was man unter Desktop versteht.
Wenn man den Desktop nach Microsoft-Art meint (das absolute Root-Window), dann hat man das Problem, welches Frank angesprochen hat.

Meint man hingegen die Fläche, auf der sich die Icons befinden (aka SysListView) kann man das Ganze relativ einfach umsetzen:

Delphi-Quellcode:
procedure TForm1.tm_Timer1Timer(Sender: TObject);
var
  wnd : HWND;
  Canv : TCanvas;
  t : STring;
  r : TRect;
begin
  t:=TimeToStr(now);

  wnd:=GetDesktopWindow;
  wnd:=FindWindowEx(wnd, 0, 'Progman', nil);
  wnd:=FindWindowEx(wnd, 0, 'SHELLDLL_DefView', nil);
  wnd:=FindWindowEx(wnd, 0, 'SysListView32', nil);
  Canv:=TCanvas.Create;
  Canv.Handle:=GetDc(wnd);
  Canv.Brush.Style:=bsClear;
  r:= Rect(100,100,100+Canv.TextWidth(t),100+canv.TextHeight(t));

  InvalidateRect(wnd,@r,true);
  SendMessage(wnd, WM_PAINT,0,0);

  Canv.TextOut(100,100, t);
  Canv.Free;
end;
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: Text auf Desktop ausgeben

  Alt 22. Mai 2007, 19:17
gut, diese variante kannte ich noch nicht...
kannte nur die screen-lösung, aber für OnScreenDisplays bevorzuge ich doch weiterhin meine Region-Form-Variante

Gruß Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz