是否可以创建具有 alpha 混合透明度的 CImageList?

发布于 2024-08-29 06:31:00 字数 534 浏览 10 评论 0原文

我想知道是否可以创建一个具有 alpha 混合透明度的 CImageList

创建透明度丑陋的 CImageList 的示例代码(无 Alpha 混合):

CGdiPlusBitmapResource m_pBitmap;
m_pBitmap.Load(IDB_RIBBON_FILESMALL,_T("PNG"),AfxGetResourceHandle());
    
HBITMAP hBitmap;
m_pBitmap.m_pBitmap->GetHBITMAP(RGB(0,0,0),&hBitmap );

CImageList *pList=new CImageList;
CBitmap bm;
bm.Attach(hBitmap);
pList->Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 4);
pList->Add(&bm, RGB(255,0,255));

I would like to know if it is possible to create a CImageList with alpha blending transparency.

Sample code that creates a CImageList with ugly transparency (no alpha blending):

CGdiPlusBitmapResource m_pBitmap;
m_pBitmap.Load(IDB_RIBBON_FILESMALL,_T("PNG"),AfxGetResourceHandle());
    
HBITMAP hBitmap;
m_pBitmap.m_pBitmap->GetHBITMAP(RGB(0,0,0),&hBitmap );

CImageList *pList=new CImageList;
CBitmap bm;
bm.Attach(hBitmap);
pList->Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 4);
pList->Add(&bm, RGB(255,0,255));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一影成城 2024-09-05 06:31:00

不要使用 ILC_MASK 标志(来自 MSDN):

使用 32 位抗锯齿图标

Windows XP 图像列表,它们是
使用的图像集合
某些控件,例如列表视图
控件,支持使用32位
抗锯齿图标和位图。颜色
值使用 24 位,8 位是
用作图标上的 Alpha 通道。
创建一个可以处理的图像列表
32 位每像素 (bpp) 图像,调用
ImageList_Create 函数传递
ILC_COLOR32 标志中。

Don't use the ILC_MASK flag (from MSDN):

Using 32 Bit Anti-Aliased Icons

Windows XP imagelists, which are
collections of images used with
certain controls such as list-view
controls, support the use of 32-bit
anti-aliased icons and bitmaps. Color
values use 24 bits, and 8 bits are
used as an alpha channel on the icons.
To create an imagelist that can handle
a 32-bits-per-pixel (bpp) image, call
the ImageList_Create function passing
in an ILC_COLOR32 flag.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文