Entwickler-Ecke

Sonstiges (Delphi) - Auf dem Bildschirm schreiben


hui1991 - Do 07.09.06 15:54
Titel: Auf dem Bildschirm schreiben
Hallo,

ich hab jetzt keine Ahnung ob das hier hin gehört, aber ich hab da eine Frage.
Also wie kann ich Bilder und Texte auf dem Bilschirm schreiben.
z. B. bei World of Warcraft, das dann die Ehrenpunkte, dann in den Vordergrund sind, so lange eine Taste gedückt wurde.
Ist das irgendwie möglich? World of Warcraft sollte, aber noch offen und ausgewählt sein, da man ja sonst nicht mehr weiterlaufen kann.

Danke schon im Voraus.

MfG
hui1991


galagher - Fr 08.09.06 11:34

user profile icongalagher hat folgendes geschrieben:
mit Bildern weiss ich im Moment nicht, wie's geht,

Mehr hab' ich nicht:

Delphi-Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, @FName, SPIF_UPDATEINIFILE+SPIF_SENDWININICHANGE);                    


uall@ogc - Fr 08.09.06 11:37

Hier mal ein Paar Stichpunkte:


Delphi-Quelltext
1:
2:
3:
4:
5:
GetDc(0);
ReleaseDC
BitBlt
TextOutA/TexOutW
Rectangle


galagher - Fr 08.09.06 11:47

Irgendwas habe ich in meinem Post gelöscht, was ich nicht wollte, sorry!
Also:
Text:
http://delphi.about.com/cs/adptips2004/a/bltip0104_5.htm

Bilder:

Delphi-Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, @FName, SPIF_UPDATEINIFILE+SPIF_SENDWININICHANGE);                    


uall@ogc - Fr 08.09.06 12:26

Das was du für Bilder hast ist der Desktophintergrund oder nicht?.
BitBlt kann auf einen Canvas kopieren. mit GetDC(0) erhälst den Desktop.


hui1991 - Fr 08.09.06 18:14

Danke für eure Antworten,
Also ich hab das Beispiel von der Seite:
http://delphi.about.com/cs/adptips2004/a/bltip0104_5.htm
So verändert, das es passt ;)
Naja aber Trotzdem ist es für den Zweck den ich wollte es ja auf den Bildschirm anzeigen.
Leider Flimmert das sowas von..
Mal ist es da mal wieder weg.
Warscheinlich, da das Spiel sich immer ändert.
Kann man dagegen was machen?
Vllt. das sich für diese Zeit der Teil der diesen Bereich zudeckt nicht verändern darf, so das es nicht flimmert.
Mit Bildern meine ich nicht, denn Desktop Hintergrund, sondern das BIld in einer BMP datei ;)
Also Bilder auf dem Bildschirm kann man ja so zeichnen:

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:
procedure DrawBmpOnDesktop(Image: String; PositionX,PositionY: Integer);
var
  Handle: HWND;
   Dc: HDC;
   ACanvas: TCanvas;
   bild : TBitMap;
begin
   Handle := GetDesktopWindow;
   Dc := GetWindowDC(Handle) ;
   ACanvas := TCanvas.Create;
   bild := TBitMap.Create;
   bild.LoadFromFile(Image);
   try
     ACanvas.Handle := DC;
     BeginPath(ACanvas.Handle) ;
     SetBkMode(ACanvas.Handle, TRANSPARENT) ;
     EndPath(ACanvas.Handle) ;
     ACanvas.Draw(PositionX,PositionY,bild);
   finally
     ReleaseDC(Handle, ACanvas.Handle) ;
     ACanvas.Free;
     bild.free;
   end;
end;

Hoffe nur das da kein Fehler ist. ;)

MfG
hui1991