【问题标题】:Is it possible to create a CImageList with alpha blending transparency?是否可以创建具有 alpha 混合透明度的 CImageList?
【发布时间】:2011-02-08 02:36:45
【问题描述】:

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

创建具有难看透明度(无 alpha 混合)的 CImageList 的示例代码

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));

【问题讨论】:

    标签: c++ image mfc alphablending mfc-feature-pack


    【解决方案1】:

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

    使用 32 位抗锯齿图标

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

    【讨论】:

    • +1。从帖子中看不清楚,但选项不兼容。屏蔽或使用带有 alpha 的 32bpp,而不是两者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多