我試圖呈現在我的對話框(Visual Studio 2010的專業版)的按鈕控制一個PNG。之後做一些研究,我發現下面的方法,其適用於BMP文件:與按鈕使用PNG圖像控件
HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
SendMessage(GetDlgItem(hDlg, IDC_BUTTON1), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
這不會PNG文件的工作,雖然。一些研究之後,我發現有一個簡單的方法來做到這一點使用GDI +:
HBITMAP hBitmap;
Gdiplus::Bitmap b(L"a.png");
b.GetHBITMAP(NULL, &hBitmap);
SendMessage(GetDlgItem(hDlg, IDC_BUTTON1), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
我不會在我的程序中使用GDI +其他地方,但我仍然需要包括標題,鏈接庫,初始化它只是爲了完成這個簡單的任務。這是否值得所有這些麻煩?有沒有更標準的方法來做到這一點?
我打算渲染上的單個按鈕的多個PNG圖像(一些透明的)。
編輯:(略有修改)CreateDIBSectionFromBitmapSource()函數,我用來創建HBITMAP可以在這裏找到:
是啊,我的意思是一個按鈕堅持一個PNG圖像。我在屬性菜單中看不到外觀下的BackgroundImage。這是否適用於使用VS資源編輯器的C++應用程序? – user974967
顯然,System.Drawing.Image是.net的東西,但你想要本地的C++,對吧? – zdd
完全是我的錯。我在問題中看到了VS2010和GDI +,並假定他使用的是C#。 –