HDC zu HBITMAP konvertieren
-
HI!
Wie kann ich ein HDC zu einem HBITMAP konvertieren?
ich habs so probiert, geht aber nichtBITMAPINFO bi; void *dibvalues; HBITMAP hBitmap; HDC hDC; hDC = GetDC(NULL); bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bi.bmiHeader.biHeight = GetSystemMetrics(SM_CYSCREEN); bi.bmiHeader.biWidth = GetSystemMetrics(SM_CXSCREEN); bi.bmiHeader.biPlanes = 1; bi.bmiHeader.biBitCount = 24; bi.bmiHeader.biCompression = BI_RGB; bi.bmiHeader.biSizeImage = ((((bi.bmiHeader.biWidth * bi.bmiHeader.biBitCount) + 31) & ~31) >> 3) * bi.bmiHeader.biHeight; bi.bmiHeader.biXPelsPerMeter = 0; bi.bmiHeader.biYPelsPerMeter = 0; bi.bmiHeader.biClrImportant = 0; hBitmap=CreateDIBSection(hDC,&bi,DIB_RGB_COLORS,(void**)&dibvalues,NULL,NULL);
Danke
n4p
-
Hallo! Du mußt den Inhalt des DC mit BitBlt ins Bitmap kopieren. Dazu brauchst du einen zweiten DC. Schau mal in der WinApi-FAQ: Bitmap speichern. Statt CreateBitmap kannst du wie gehabt CreateDIBSection verwenden.
-
Aber mit BitBlt kann ich doch nur einen HDC kopieren...kannst du mir mal die Reihenfolge der Dinge die ich machen muss sagen?
-
CreateCompatibleBitmap (ein Bitmap mit der entsprechenden größe erstellen) CreateCompatibleDC (ein DC (DC1) für dieses Bitmap erstellen) SelectObject (das Bitmap in DC1 selektieren) BitBlt (den Inhalt aus DC in DC1 kopieren) DeleteDC (DC1 wieder löschen)
edit: der übernimmt meine schöne Formatierung net
[ Dieser Beitrag wurde am 15.05.2003 um 20:25 Uhr von D@niel $chumann editiert. ]
-
@ D@niel $chumann
Und was haben wir wiedermal vergessen?
...
Das Bitmap aus dem DC zu löschen!