Bitblt单色位图SetBkColor、SetTextColor作用
2015-04-24 09:38
447 查看
void CGameDIB::TransparentBlt(HDC hdcDest,
int iDestX, int iDestY, int iDestWidth, int iDestHeight,
HDC hdcSource, int iSourceX,
int iSourceY, int iSourceWidth, int iSourceHeight,UINT Tcol)
{
// 1. 建立图形资源
HBITMAP hbitmapMem = ::CreateCompatibleBitmap(hdcDest, iDestWidth, iDestHeight);
HBITMAP hbitmapMask = ::CreateBitmap(iDestWidth, iDestHeight,
1, 1, NULL); // 创建单色掩码位图
HDC hDCMem = ::CreateCompatibleDC(hdcDest);
HDC hdcMask = ::CreateCompatibleDC(hdcDest);
HBITMAP oldBMPMem = (HBITMAP)::SelectObject(hDCMem, hbitmapMem);
HBITMAP oldBMPMask = (HBITMAP)::SelectObject(hdcMask, hbitmapMask);
// 2. 拷贝或压缩拷贝源DC中的位图到内存DC中
if (iSourceWidth == iDestWidth && iSourceHeight == iDestHeight)
::BitBlt(hDCMem, 0, 0, iDestWidth, iDestHeight, hdcSource, iSourceX, iSourceY, SRCCOPY);
else
::StretchBlt(hDCMem, 0, 0, iDestWidth, iDestHeight, hdcSource, iSourceX, iSourceY, iSourceWidth,iSourceHeight, SRCCOPY);
// 3.生成掩码位图
::SetBkColor(hDCMem, Tcol); // 设置掩码图中白色的对应RGB,若无则生成全黑。
::BitBlt(hdcMask, 0, 0, iDestWidth, iDestHeight, hDCMem,
0, 0, SRCCOPY); // 生成掩码位图
::SetBkColor( hDCMem, RGB(0,
0, 0) );
::SetTextColor(hDCMem, RGB(255,
255, 255) );
::BitBlt(hDCMem, 0, 0, iDestWidth, iDestHeight, hdcMask,
0, 0, SRCAND); // 黑色背景的人物
// 4.透明显示
::SetBkColor(hdcDest, RGB(255,
255, 255) );
::SetTextColor(hdcDest, RGB(0,
0, 0) );
::BitBlt(hdcDest, iDestX, iDestY, iDestWidth, iDestHeight, hdcMask,
0, 0, SRCAND); // 生成掩码洞
::BitBlt(hdcDest, iDestX, iDestY, iDestWidth, iDestHeight, hDCMem,
0, 0, SRCPAINT); // 透明效果
// 5.释放图形资源
::SelectObject(hDCMem, oldBMPMem);
::DeleteDC(hDCMem);
::DeleteObject(hbitmapMem);
::SelectObject(hdcMask, oldBMPMask);
::DeleteDC(hdcMask);
::DeleteObject(hbitmapMask);
}
相关文章推荐
- Bitblt单色位图SetBkColor、SetTextColor作用网络版. 加自己的理解.
- Bitblt单色位图SetBkColor、SetTextColor作用
- 关于图片镂空和bitblt及setbkcolor等的理解
- Android中设置setTextColor()没有作用
- 在场景中输出文字SetTextColor,SetBkMode,TextOut函数
- 在场景中输出文字--SetTextColor(),SetBkMode(),TextOut()的使用
- SetTextColor() COLORREF SetBkColor SetBkMode的用法
- setTextColor的几个注意事项
- setTextColor六种方式
- RadioButton的setTextColor失效!
- SetBkColor
- CDC::SetBkColor函数在CView的派生类的OnCreate函数调用不起作用,不知为什么???
- getColor过时,setTextColor的现用方法
- Android中设置TextView的颜色setTextColor
- Android中设置TextView的颜色setTextColor
- 【Android基础】setTextColor(),setBackgroundColor的参数设置方式
- 在java文件中设置文字颜色:setTextColor()
- Android Button setTextColor()参数调用分析
- 同时兼容高低版本的setBackground跟setTextColor方法
- pieslice(),setcolor(),setbkcolor()