Yritän piirtää dialogiin Suomen lippua jonka koko on 32x32.
Mutta jostain syystä, WM_PAINT:ssä kun katotaan kuvan kokoa niin se onkin 64x64.
Mikä tossa on vikana.
// ladataan kuva
bm = (HBITMAP)LoadImage(hInst,_T("j:\\pics\\finland.bmp"), IMAGE_BITMAP, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_LOADFROMFILE);
// piirretään kuva dialogiin
WM_PAINT:
BITMAP bminfo;
HDC hdc = GetDC(hDlg);
HDC memdc = CreateCompatibleDC(hdc);
GetObject(bm,sizeof(bminfo),&bminfo);
HBITMAP old_hbitmap = (HBITMAP)SelectObject(memdc, bm);
BitBlt(hdc ,10 , 10, bminfo.bmWidth, bminfo.bmHeight, memdc, 0, 0, SRCCOPY);
ReleaseDC(hDlg,hdc);
DeleteDC(memdc);
return (INT_PTR)TRUE;
Mutta jostain syystä, WM_PAINT:ssä kun katotaan kuvan kokoa niin se onkin 64x64.
Mikä tossa on vikana.
// ladataan kuva
bm = (HBITMAP)LoadImage(hInst,_T("j:\\pics\\finland.bmp"), IMAGE_BITMAP, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_LOADFROMFILE);
// piirretään kuva dialogiin
WM_PAINT:
BITMAP bminfo;
HDC hdc = GetDC(hDlg);
HDC memdc = CreateCompatibleDC(hdc);
GetObject(bm,sizeof(bminfo),&bminfo);
HBITMAP old_hbitmap = (HBITMAP)SelectObject(memdc, bm);
BitBlt(hdc ,10 , 10, bminfo.bmWidth, bminfo.bmHeight, memdc, 0, 0, SRCCOPY);
ReleaseDC(hDlg,hdc);
DeleteDC(memdc);
return (INT_PTR)TRUE;
Vastaukset 1
Vanhimmat
Hahah, heti kun kirjoitin ton tänne, niin huomasin erheeni :)
Eli vika kuvan latauksessa... ei saa käyttää RL_DEFAULTSIZE ja RL_LOADFROMFILE tai
Windows asettaa ton defaultin eikä ota tietoja filusta!
//Väärin
bm = (HBITMAP)LoadImage(hInst,_T("j:\\pics\\finland.bmp"), IMAGE_BITMAP, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_LOADFROMFILE);
//Oikein
bm = (HBITMAP)LoadImage(hInst,_T("j:\\pics\\finland.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);