Ich versuche, ein Bild mit GDI + zu zeichnen. Wenn ich es in WM_PAINT
tun es funktioniert:GDI + Graphics :: DrawImage funktioniert nicht
case WM_PAINT: {
hdc = BeginPaint(hWnd, &ps);
Gdiplus::Graphics graphics(hdc);
Gdiplus::Image gdiImage(L"unt.png");
graphics.DrawImage(&gdiImage, 40, 40);
EndPaint(hWnd, &ps);
break;
}
Aber wenn ich es auf eine Schaltfläche klicken tun oder in WM_CREATE
es nicht das Bild zeichnen:
HDC hdc2 = GetDC(hWnd);
Gdiplus::Graphics graphics(hdc2);
Gdiplus::Image gdiImage(L"unt.png");
graphics.DrawImage(&gdiImage, 40, 40);
Auch wenn ich BeginPaint()
und EndPaint()
es schlägt immer noch fehl. Gibt es eine Möglichkeit, das Bild außerhalb von WM_PAINT
zu zeichnen?
Wenn Sie es in WM_CREATE tun, dann tun Sie es zu früh, das Fenster ist noch nicht sichtbar. Wenn Sie es in einem Button-Click-Handler tun, funktioniert es wahrscheinlich, aber Sie können es einfach nicht sehen, da es eine Millisekunde später wieder übermalt wird. Nun, deshalb gibt es WM_PAINT, es sagt dir zuverlässig, wann du * malen * sollst. –