基本上,当直接在纯色表面上绘制时,具有 alpha 的图像可以正确绘制,但是当它碰到窗口透明的区域时,具有 alpha 值的 PNG 开始具有白色背景。
希望我的代码能帮助你们破译发生了什么。非常感谢所有帮助。
GDI+ 绘图
Image indicator(L"resources\\images\\floating_icon [a] 1.png", FALSE);
g.DrawImage(&indicator, 0, 0);
TextureBrush myTextureBrush(&indicator);
g.FillRectangle(&myTextureBrush, WindowPadding, 50, WindowDim.right - WindowPadding * 2, WindowPadding);
窗口属性
hWnd = CreateWindowEx(0, szWindowClass, szTitle, WS_POPUP | WS_OVERLAPPED,
0, 0, WindowDim.right, WindowDim.bottom, NULL, NULL, hInstance, NULL);
SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255), 0,
LWA_COLORKEY);