我已经将CBitmapButton子类化为创建我自己的按钮,其中包含覆盖的函数DrawItem。这是来自它的代码,它起作用:
CDC *pDC = &dc;
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap m_Bmp;
m_Bmp.LoadBitmap(IDB_ARROW);
CBitmap *temp = memDC.SelectObject(&m_Bmp);
BLENDFUNCTION blend;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = AC_SRC_ALPHA;
blend.SourceConstantAlpha = 255;
AlphaBlend(pDC->m_hDC, pt.x, pt.y, 85, 85, memDC.m_hDC, 0, 0, 85, 85, blend);
dc.SelectObject(&temp);
问题是所有图像都已加载并存储在CImageList中。我不知道如何转换它们。
CImageList创建可能有问题: m_LargeImg.Create(365,85,ILC_COLOR32,4,0);
ImageWork::get().addBitmapToList(IDB_MAIN_MENU_ICON1, &m_LargeImg);
ImageWork::get().addBitmapToList(IDB_MAIN_MENU_ICON2, &m_LargeImg);
ImageWork::get().addBitmapToList(IDB_MAIN_MENU_ICON3, &m_LargeImg);
ImageWork::get().addBitmapToList(IDB_MAIN_MENU_ICON4, &m_LargeImg);
答案 0 :(得分:0)
好吧,也许你不应该尝试转换它们。如果您只想抓取它们,请尝试使用其中一个图像列表绘制函数,如CImageList :: DrawIndirect,它支持Alpha混合等。这可能是你唯一需要的东西。