Bild ausschneiden
-
Was meinst du mit Memory-DC. Kannst du nicht einfach mal einen richtigen Code (mit Kommentaren falls nicht umständlich) hier zeigen, bitte?
mfg A-lex
-
Das was du mit CreateCompatibleDC erstellst ist ein Memory-DC.
HBITMAP hBitmap = Load...(); // schon geladenes Bild HDC hDCBitmap = CreateCompatibleDC(NULL); SelectObject(hDCBitmap,hBitmap); HDC hDest = CreateCompatibleDC(NULL); HBITMAP hNew = CreateCompatibleBitmap(hDCBitmap,32,32); SelectObject(hDest,hNew); BitBlt(hDest,0,0,32,32,hDCBitmap,0,0,SRCCOPY); // mache etwas mit hDCBitmap und hDest DeleteDC(hDCBitmap); DeleteObject(hBitmap); DeleteDC(hDest); DeleteObject(hNew);
Hoffentlich hab ich jetzt keine allzu großen Fehler drinnen. BTW: Ich weiß ja nicht genau, was du vorhast, aber du kannst auch einfach gleich den entspechenden Ausschnitt auf dein Fenster blitten. (ohne den Umweg über hDest)
-
Ich will mit
HWND hStatic = CreateWindowEx(WS_EX_TRANSPARENT,"STATIC","",WS_VISIBLE | WS_CHILD | WS_BORDER | SS_BITMAP,0,0,32,32,hWnd,NULL,hInstance,NULL) SendMessage(hStatic,STM_SETIMAGE,IMAGE_BITMAP,hDest);
es in ein Static-Feld reinmachen. Und irgenwie funktioniert das immer noch nicht bei mir.
mfg A-lex
-
Da musst du dann auch ein Bitmap-Handle angeben - also hNew.
Du solltest dir etwas besser anschauen, wie genau die Funktionen deklariert sind und nicht einfach das nächstbeste übergeben!
-
geht auch nicht.
mfg A-lex
-
Dann zeig mal etwas mehr Code
-
Was meinst du mit mehr Code? Du hast doch selber den Teil geschrieben und ich hab es übernohmen.
mfg A-lex
-
Vielleicht hast du ihn ja auch falsch eingebaut
Kann natürlich auch sein, dass mein Code fehlerhaft ist - du solltest auf jeden Fall mal die Rückgabewerte überprüfen. Und wie sieht das "geht auch nicht" aus?! Bekommst du Fehler? Etwas mehr Infos wären halt nicht schlecht, denn sonst kann man nur wild herumraten!
-
Könnte es daran liegen, dass sie verschiedene Größen haben oder so?
mfg A-lex
-
So jetzt hab ich's raus:
// hdc = aktuelles DC zum Zeichnen // hBmp = geladenes Bild // geht nur beim WM_PAINT HDC NewDC = CreateCompatibleDC(hdc); HBITMAP NewBmp = CreateCompatibleBitmap(hdc,32,32); SelectObject(NewDC,NewBmp); HDC hMemDC = CreateCompatibleDC(hdc); SelectObject(hMemDC,hBmp); BitBlt(NewDC,0,0,32,32,hMemDC,0,0,SRCCOPY); DeleteDC(NewDC); DeleteDC(hMemDC);
mfg A-lex