Ein HDC stretchen
-
Hallo!
Ich habe ein HDC mit Grafiken drin, das möchte ich auf 300x400 stretchen.Ich habs mir so gedacht.
Erst ein CreateCompatibleDC vom richtigen DC von der Anwendung machen, die vollmalen, ein compatibles Bitmap von der Kopie (newDC) machen, und dann SelectObject(newDC, hBitmap);
dann StretchBlt(dc, .............. newDC, .....);
leider bringt mir das ganze nur ein schwarzes großes rechteck :((
wie soll ich das sonst machen? StrechBlt einfach so funktioniert nicht..
Kevin
-
Versuch mal bei CreateCompatibleDC und CreateCompatibleBitmap für den DC 'GetDC(NULL)' anzugeben ...
M.T.
-
das selbe ergebnis...hat das vlt was damit zu tun dass ich MFC verwende? sollte aber nich..
-
Das kann doch nicht so schwer sein
-
Zeig mal deine Code! So ungefähr hätte ich das gemacht (ungetestet):
HDC memDC = CreateCompatibleDC(hDC); HBITMAP memBM = CreateCompatibleBitmap(hDC,300,400); SelectObject(memDC,memBM); // in memDC mit StretchBlt reinblitten und anschließend wieder auf hDC blitten
Evtl. kannst du auch direkt für hdcSrc und hdcDest den gleichen DC angeben (also ohne den Umweg über einen memDC)
-
ich hab es so gemacht (wollte erstmal schauen ob BitBlt funktioniert)
newDC = CreateCompatibleDC(dc); m_bild->Render(newDC, 0,0, width*96/2540, height*96/2540, 0, height, width, -height, &rc); hMem = CreateCompatibleBitmap(newDC, 300, 400); SelectObject(dc, hMem); BitBlt(dc, 25, 154, width*96/2540, height*96/2540, newDC,width*96/2540, height*96/2540, SRCCOPY);
-
Sollte es nicht so aussehen:
newDC = CreateCompatibleDC(dc); hMem = CreateCompatibleBitmap(dc,300,400); SelectObject(newDC,hMem); m_bild->Render(newDC, 0,0, width*96/2540, height*96/2540, 0, height, width, -height, &rc); BitBlt(dc, 25, 154, width*96/2540, height*96/2540, newDC,width*96/2540, height*96/2540, SRCCOPY);
-
Kannst du nicht eigentlich gleich bei Render stretchen
-
hmm weiß nich?
ma testenglaub aba nich
-
doch es geht tatsächlich