我的意图是在Win32中创建一个包含透明图标的工具栏。我已经尝试使用以下代码创建一个带有自定义图像的按钮的简单工具栏:
// Create the toolbar
HWND hToolbar = CreateWindow(TOOLBARCLASSNAME,
NULL,
WS_CHILD | TBSTYLE_FLAT | TBSTYLE_AUTOSIZE | TBSTYLE_LIST | CCS_BOTTOM,
0, 0, 0, 0,
hwnd,
NULL,
ghInstance, // <-this is the HINSTANCE of the application
NULL);
// Set the font (this cannot be the problem)
SendMessage(hToolbar,
WM_SETFONT,
(WPARAM)hFontBold,
static_cast<LPARAM>(MAKELONG(TRUE, 0)));
auto hImagelist = ImageList_Create(32, 32,ILC_COLOR24 | ILC_MASK, 1, 0);
HBITMAP bitmap = static_cast<HBITMAP>(LoadImage(ghInstance,
/* ID_IMG_SPAWN is my custom resource -> */ MAKEINTRESOURCE(ID_IMG_SPAWN),
IMAGE_BITMAP,
32, 32,
NULL));
ImageList_AddMasked(hImagelist,
bitmap,
RGB(255,255,255) /* white …Run Code Online (Sandbox Code Playgroud) (这与如何使用Win32/GDI加载PNG图像的问题有关(如果可能,没有GDI +)?)
大家好,
我想知道,鉴于你有一个PNG资源嵌入带有ID的二进制文件中IDB_PNG1,并且LPDRAWITEMSTRUCT要绘制(这意味着你有HDC目标的矩形和矩形),你如何使用这个图像绘制到屏幕上StretchDIBits?我曾经BitBlt和TransparentBlt以前StretchDIBits一起工作,但似乎工作方式不同,LoadImage似乎不适用于PNG.
谢谢!
(注意:我使用的语言是C++,但这并不太重要...... C,C#,Visual Basic等都没问题;我只是想弄清楚步骤,而不是确切的代码.)
我想做的事情似乎简单直接,我希望从Microsoft Visual C++(非托管代码)打印到打印机的PNG文件.