有关图像处理

HBITMAP CreateBitmapFromIcon(HICON icon,int w,int h)
{
    CDC dc;
    dc.CreateCompatibleDC(NULL);
    HDC desk=GetDC(GetDesktopWindow());
    HBITMAP bmp=CreateCompatibleBitmap(desk,w,h);

    CBitmap *old=dc.SelectObject(CBitmap::FromHandle(bmp));
    dc.Rectangle(-1,-1,w+2,h+2);
    ::DrawIconEx(dc.GetSafeHdc(), 0, 0, icon, w,h, 0, 0, DI_NORMAL);//DrawIcon(dc.m_hDC,0,0,i);

    dc.SelectObject(old);

    ReleaseDC(GetDesktopWindow(),desk);

    return bmp;
}

 

图像变灰:三种方法(http://www.vckbase.com/document/viewdoc/?id=1793)

1、HBITMAP hbitmap = (HBITMAP)CopyImage(hBMP, IMAGE_BITMAP, 0, 0, LR_COPYDELETEORG|LR_MONOCHROME);

 

2、LoadImage ()

 

3、HBITMAP BitmapColorToGray(CDC* pDC,HBITMAP hBitmap) { BITMAP bmpInfo; ::GetObject(hBitmap,sizeof(BITMAP),&bmpInfo); if(pDC) { CDC memDC; if( !memDC.CreateCompatibleDC(pDC) ) { return NULL; } HBITMAP oldBitmap = (HBITMAP)memDC.SelectObject(hBitmap); DWORD r,g,b; for (int H =0; H <= bmpInfo.bmHeight; H++) { for(int W = 0; W <= bmpInfo.bmWidth; W ++) { r = GetRValue(memDC.GetPixel(W,H)); g = GetGValue(memDC.GetPixel(W,H)); b = GetBValue(memDC.GetPixel(W,H)); r = (r * 3 + g * 6 + g) / 10; g = r; b = g; memDC.SetPixel(CPoint(W,H),RGB(r,g,b)); } } hBitmap = (HBITMAP)memDC.SelectObject(oldBitmap); memDC.DeleteDC(); } return hBitmap; }

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值