Carica immagine in CButton mfc c++

di il
2 risposte

Carica immagine in CButton mfc c++

Devo caricare un'immagine in un bottone, l'immagine viene caricata ma risulta sgranata, non

so come poter risolvere, ecco il codice utilizzato:


						CImage image;

						HRESULT hr = image.Load(str_path); // just change extension to load jpg

						CBitmap bmp;
						bmp.Attach(image.Detach());

						BITMAP bm = { 0 };
						bmp.GetBitmap(&bm);
						auto size = CSize(bm.bmWidth, bm.bmHeight);

						CWindowDC screenCDC(NULL);
						auto dpiX = screenCDC.GetDeviceCaps(LOGPIXELSX);
						auto dpiY = screenCDC.GetDeviceCaps(LOGPIXELSY);

						auto hiSize = CSize((dpiX * size.cx) / 1, (dpiY * size.cy) / 1);

						CBitmap * res;
						res = new CBitmap();
						res->CreateCompatibleBitmap(&screenCDC, largh, altez);

						CDC srcCompatCDC;                                                                                                                                                                                                                                                                                                                                                                                                                                     
						srcCompatCDC.CreateCompatibleDC(&screenCDC);
						CDC destCompatCDC;
						destCompatCDC.CreateCompatibleDC(&screenCDC);

						CMemDC srcDC(srcCompatCDC, CRect(CPoint(), size));
						auto oldSrcBmp = srcDC.GetDC().SelectObject(&bmp);

						CMemDC destDC(destCompatCDC, CRect(CPoint(), hiSize));
						auto oldDestBmp = destDC.GetDC().SelectObject(res);

						destDC.GetDC().StretchBlt(0, 0, largh, altez, &srcDC.GetDC()  , 0, 0, size.cx, size.cy, SRCCOPY);

						srcDC.GetDC().SelectObject(oldSrcBmp);
						destDC.GetDC().SelectObject(oldDestBmp);
						
						////////////////////**********************************************
					

						HBITMAP hBitmap6 = (HBITMAP)res->GetSafeHandle();
					
						m_Btn1.SetBitmap(hBitmap6);

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte