15,979
社区成员
发帖
与我相关
我的任务
分享
//
BOOL CMainFrame::GetBitmapFromImageList(CDC* pDC,CImageList *imglist,int nIndex,CBitmap &bmp)
{
HICON hIcon = imglist->ExtractIcon(nIndex);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,16,16);
CBitmap* pOldBmp = memDC.SelectObject(&bmp);
CBrush brush ;
brush.CreateSolidBrush(RGB(255,255,0));//yellow
::DrawIconEx(memDC.GetSafeHdc(),0,0,hIcon,16,16,0,(HBRUSH)brush,DI_NORMAL);
// to screen
// pDC->BitBlt(260,10,16,16,&memDC,0,0,SRCCOPY);
// free
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
// the icon is not longer needed
DestroyIcon(hIcon);
//
return(TRUE);
}
调用:
void CMainFrame::OnDrawicon()
{
// TODO: Add your command handler code here
static int n=0;
CDC *pDC=GetDC();
// draw
CBitmap bmp;
GetBitmapFromImageList(pDC,&tree_imageList,n,bmp);
// bmp OK,Redraw it!
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap* pOldBmp = memDC.SelectObject(&bmp);
//
pDC->BitBlt(300,10,16,16,&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
//
n++;
if(n>=4) n=0;
//
ReleaseDC(pDC);
}
BOOL Cxxxx::GetBitmapFromImageList(CDC* pDC,CImageList *imglist,int nIndex,CBitmap &bmp)
{
HICON hIcon = imglist->ExtractIcon(nIndex);
CDC dc;
dc.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,m_iconX,m_iconY);
CBitmap* pOldBmp = dc.SelectObject(&bmp);
CBrush brush ;
brush.CreateSolidBrush(GetSysColor(COLOR_MENU));
::DrawIconEx(
dc.GetSafeHdc(),
0,
0,
hIcon,
m_iconX,
m_iconY,
0,
(HBRUSH)brush,
DI_NORMAL
);
dc.SelectObject( pOldBmp );
dc.DeleteDC();
// the icon is not longer needed
DestroyIcon(hIcon);
return(TRUE);
}