bild speichern
-
musst ggf. eine Bitmap erstellen und das hdc da rein kopieren?
oder lieber CDC nehmen, wenn ja wie?cu
-
CreateCompatibleBitmap würde ich nehmen um von HDC auf HBITMAP zu kommen.
-
GetCurrentObject wäre vielleicht auch eine Möglichkeit.
-
hi!
HWND hwnd = GetSafeHwnd(); HDC hdc = ::GetDC(hwnd); HBITMAP memBM = CreateCompatibleBitmap ( hdc, 200, 200 ); image.Attach(memBM); // save an image in BMP format, even though jpg file extension is used image.Save("c:\\image.jpg");
es wird nun ein bild gespeichert...das ist aber nur schwarz...was nicht sein kann, denn ich zeichne:
cu
-
hi!
HWND hwnd = GetSafeHwnd(); HDC hdc = ::GetDC(hwnd); HBITMAP memBM = CreateCompatibleBitmap ( hdc, 200, 200 ); image.Attach(memBM); // save an image in BMP format, even though jpg file extension is used image.Save("c:\\image.jpg");
es wird nun ein bild gespeichert...das ist aber nur schwarz...was nicht sein kann, denn ich zeichne:
cu
-
Du kopierst ja nirgendwo den inhalt des Bildschirms in dein Bild.
-
sorry CreateCompatibleBitmap war wohl dann falsch.
-
[url]www.gerii.com/bild.png [/url]
den ganzen bildschirm brauch ich ja nicht...nur die ganze zeichenfläche von oben, gibs da nicht was spezielles? hm...
cu
-
Meinen Vorschlag mit GetCurrentObject schon getestet?
-
ja, aber da ging was schief beim casten;-(
cu
-
hilft das? hab ich im internet gefunden.
HBITMAP CopyScreenToBitmap() { HDC hScrDC, hMemDC; HBITMAP hBitmap, hOldBitmap; int nX, nY, nX2, nY2; int nWidth, nHeight; hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL); hMemDC = CreateCompatibleDC(hScrDC); nX = 0; nY = 0; nX2 = GetDeviceCaps(hScrDC, HORZRES); nY2 = GetDeviceCaps(hScrDC, VERTRES); nWidth = nX2 - nX; nHeight = nY2 - nY; hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight); hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY); hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap); DeleteDC(hScrDC); DeleteDC(hMemDC); return hBitmap; }
-
hi!
funzt nun, macht aber einen sceenshoot des ges. bildschirmes...wie kann ich sicher stellen das nur die bildfläche auf der ich zeichnen kann gespeichert wird? ich dank mal das muss einfacher gehn...?
cu
-
#include <hirn.h>