![]() |
Bitmap auf Bildschirm zeichnen
Ich habe eine Animation, in der ich ein Bitmap habe, da draufzeichne, und dann das Bitmap ausgebe. kann ich das auch irgendwie direkt aufden Bildschirm zeichen ???
Also sowas wie Screen.Assign(Bitmap) ??? |
Re: Bitmap auf Bildschirm zeichnen
Hi,
worauf willst du die Bitmap zeichnen lassen? Man kann nicht auf TScreen zeichnen, sondern nur auf Zeichenflächen (also TCanvas bzw. ein HDC). Wenn du auf dem gesamten Bildschirm zeichnen willst helfen dir die Funktionen ![]() ![]() |
Re: Bitmap auf Bildschirm zeichnen
Ich möchte das Bitmap auf den ganzen Bildschirm zeichnen, ja.
Es muss nicht z.B. Spiele "überzeichnen", aber sowas wie eine Fullscreen-Ansicht meines Bitmaps. P.S. Könntest du mir das mit dem GETDC mal erklären ? Ich versteh' das irgendwie nicht do richtig ... :? :( |
Re: Bitmap auf Bildschirm zeichnen
GetDC liefert dir die zu einem Fenster gehörige Zeichenfläche (in Form eines Handles).
Delphi-Quellcode:
ist aber ungetestet, alle Angaben ohn.... :mrgreen:
//Bitmap auf Desktop ausgeben
procedure DrawBMPOnDesktop(BMP: TBitmap; XOffset, YOffset: Integer); var hdcDesktop: HDC; begin hdcDesktop := GetDC(GetDesktopWindow); If hdcDesktop <> 0 then (**Schnelles kopieren des Bitmaps auf die Desktop-Zeichenfläche**) BitBlt(hdcDesktop, XOffset, YOffset BMP.Width, BMP.Height, BMP.Canvas.Handle, 0, 0, SRCCOPY); end; //Edit: Delphi-Tags |
Re: Bitmap auf Bildschirm zeichnen
Funktioniert super, hab' Sie noch ein wenig abgewandelt ...
Delphi-Quellcode:
procedure DrawBMPFullScreen(BMP: TBitmap32);
var hdcDesktop: HDC; begin hdcDesktop := GetDC(0); If hdcDesktop <> 0 then StretchBlt(hdcDesktop, 0, 0, GetSystemMetrics(SM_CXSCREEN), // Screenbreite GetSystemMetrics(SM_CYSCREEN), // Screenhöhe BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height, SRCCOPY); end; |
Re: Bitmap auf Bildschirm zeichnen
Zu früh gefreut ... Jetzt muss man das immer wieder wegwischen ...
Kann man alles neuzeichenen lassen ??? Mit
Delphi-Quellcode:
geht's irgendwie nicht ... :gruebel:
SendMessage (HWND_BROADCAST, WM_PAINT, 0, 0);
Sollte Non-VCL sein ... Edit: Lösung:
Delphi-Quellcode:
InvalidateRect (0, nil, TRUE);
|
Re: Bitmap auf Bildschirm zeichnen
Mittlerweile habe ich folgendes Problem: Wenn ich mein tolles Bitmap zeiche (mitunter 60 mal /sek) und dann mit der Maus unten in Richtung Taskleiste gehe, dann flimmert die Taskleiste da durch, also mal wird mein Bitmap auf die Taskbar gezeichnet, und mal andersrum. kann ich irgendwie mein Desktop-Fenster (Handle: 0) nach oben holen, dass die Taskbar dadrunter gezeichnet wird ???
Oder kann ich gar einen DC dafür anlegen, der alles überdeckt ? |
Re: Bitmap auf Bildschirm zeichnen
*piep*
|
Re: Bitmap auf Bildschirm zeichnen
Wo zeichnest du das Bild rein, direckt auf die Form? Wenn du das Bild in einem Image zeichnen würdest, könntest du das Image löschen und danach neu erzeugen. :gruebel:
z.B. so:
Delphi-Quellcode:
Gruß
Image1.Free;
Image1:=TImage.Create(Self); with Image1 do begin Name:='Image1'; Parent:=self; Left:=336; Top:=40; height:=273; width:=489; end; Hospi |
Re: Bitmap auf Bildschirm zeichnen
Nene, ist schon Vollbild, aber es flackert halt, wenn ich mit der Maus z.B. über si Taskleiste gehe ... :?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz