Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C++ [GDI] Offscreen Bitmap - solved (https://www.delphipraxis.net/118164-%5Bgdi%5D-offscreen-bitmap-solved.html)

SnuffMaster23 2. Aug 2008 01:28

Re: [GDI] Offscreen Bitmap
 
Ja aber wenn ich aufn monochromen DC blit hab ich auch nix davon.
Lustig bin ich fast immer, daran sollts net scheitern :D

Der kompatible DC is erstmal immer monochrom und 1x1 Pixel groß. Der braucht ja dann ein (buntes) größeres Bitmap. Aber es geht halt auch nur mit nem kompatiblen Bitmap, wenn ich eins mit CreateBitmap erzeug kann des noch so bunt sein, er malt mir dann aufn Bildschirm, selbst mit dem Memory DC :(

Medium 2. Aug 2008 01:49

Re: [GDI] Offscreen Bitmap
 
Nochmal in Klartext: Ersetze diese Zeile:
Code:
hDC = CreateCompatibleDC(GetDC(NULL));
mit dieser:
Code:
hDC = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
Sonst nichts, und schau ob das so ist, wie du es möchtest.

SnuffMaster23 2. Aug 2008 13:51

Re: [GDI] Offscreen Bitmap
 
Nein, so hatt ichs zuerst. Das malt zwar in Farbe aber aufn Bildschirm und nicht ins Bitmap :(
Sowohl mit nem kompatiblen als auch mit nem 'normalen' Bitmap.

Medium 2. Aug 2008 13:58

Re: [GDI] Offscreen Bitmap
 
Hm, okay, mist :) Dann muss ich hier leider aussteigen, das war schon leicht über der Grenze meines Lateins ;)

Ich sollte mich eindeutig mal mehr mit der API beschäftige...

SnuffMaster23 2. Aug 2008 16:12

Re: [GDI] Offscreen Bitmap
 
Ok, ich hab einen kleinen Fortschritt erzielt^^
Ich komm an meine Pixeldaten :love:
Code:
  GetDIBits(hDC, hBMP, 0, 512, pixels, &BmpInfo, DIB_RGB_COLORS);
Fehlt nur noch etwas Farbe...

//Edit:
Manchmal hilfts in Beispiele zu gucken die nicht ganz direkt was damit zu tun haben: Capturing an Image
Zitat:

Code:
hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL);
hdcCompatible = CreateCompatibleDC(hdcScreen);
 
// Create a compatible bitmap for hdcScreen.
 
hbmScreen = CreateCompatibleBitmap(hdcScreen,
                     GetDeviceCaps(hdcScreen, HORZRES),
                     GetDeviceCaps(hdcScreen, VERTRES));

Die erzeugen einen bunten DC, dazu einen Memory DC und ein Bitmap zum bunten DC, nicht zum Memory DC der ja auch bunt sein sollte :D

Das hier tuts auch und ist meiner Meinung nach sauberer weil kein ungenutzter DC erzeugt werden muss:
Code:
  HDC       hDC,
             hTmpDC = GetDC(HWND_DESKTOP);
// ...
  hDC = CreateCompatibleDC(hTmpDC);
  hBMP = CreateCompatibleBitmap(hTmpDC, 512, 512);

helgew 2. Aug 2008 17:52

Re: [GDI] Offscreen Bitmap - solved
 
@Medium ops... passiert *g* das nächste mal bin ich wohl lieber ruhig ;)

Medium 2. Aug 2008 18:46

Re: [GDI] Offscreen Bitmap - solved
 
Also das Bitmap mit dem ersten DC als Parameter erstellen, um es dann im davon ausgehend erzeugten zweiten DC zu benutzen ist die Lösung. Machmal... also, nur manchmal, da wundere ich mich schon ob jetzt der Entwickler dieser API einen im Tee hatte, oder ob mein Kaffee nur zu schwach war um dem einen tieferen Sinn beimessen zu können :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.
Seite 2 von 2     12   

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