Próbuję narysować obraz przy użyciu GDI +. Kiedy to zrobić wewnątrz WM_PAINT
to działa:GDI + Grafika :: DrawImage nie działa
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;
}
Ale kiedy robię to na kliknięcie przycisku lub wewnątrz WM_CREATE
nie rysować obraz:
HDC hdc2 = GetDC(hWnd);
Gdiplus::Graphics graphics(hdc2);
Gdiplus::Image gdiImage(L"unt.png");
graphics.DrawImage(&gdiImage, 40, 40);
Nawet jeśli używam BeginPaint()
i EndPaint()
nadal się nie udaje. Czy istnieje sposób na narysowanie obrazu poza numerem WM_PAINT
?
Jeśli zrobisz to w WM_CREATE, to zrobisz to za wcześnie, okno nie jest jeszcze widoczne. Kiedy robisz to w procedurze obsługi przycisku, to prawdopodobnie działa, ale po prostu nie możesz go zobaczyć, ponieważ zostaje ponownie zamalowany ponownie o milisekundę później. Cóż, właśnie dlatego istnieje WM_PAINT, niezawodnie mówi, kiedy * powinieneś * malować. –