打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CDC::PatBlt
原文地址:http://406tayoto.blog.sohu.com/18882944.htmlpatBlt()函数使用
标签: nbsp   图样   函数   缩写   位图 
PatBlt()函数的名字其实是一个缩写,全称应该是“图样块传送”(PATtern BLock Transfer, 缩写后就是PatBlt),从这个名字上看,它好像只是简单的复制画刷(或叫图样),直到填充完指定的矩形之后就结束了,其实这个函数可没有这么简单,它在复制画刷之前,将根据光珊操作码(raster operation,缩写是ROP)来组合图样中的像素与目标DC中相同位置上的像素而形成最终的图像。光珊操作码(ROP)在组合的过程中起到了非常重要的作用,实质上ROP是一种位操作符,一共有256种,PatBlt()函数可以接受那些需要图样和目标位图的ROP。下面的表格列出了该函数经常用到的5个ROP:
ROP 描述 PATCOPY 拷贝图样到目标位图中 PATINVERT 用图样的像素或(即位操作OR)目标位图 DSTINVERT 将目标位图的像素值取反(即非目标图的像素值) BLACKNESS 将所有的输出都设为二进制的0 WHITENESS 将所有的输出都设为二进制的1 PatBlt()有五个参数,前四个分别是要填充的区域(最左边,最右边,宽度,高度)设置背景.以前作业用过; BOOL CSampleView::OnEraseBkgnd(CDC* pDC)
{
// 设置所要求背景色的刷子
CBrush backBrush(RGB(255, 128, 128));
// 保存旧刷子
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);     // 擦除所需的区域
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}
另一种方法:HBRUSH dlgtest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch (nCtlColor)
{
case CTLCOLOR_BTN:
case CTLCOLOR_STATIC:
{
pDC->SetBkMode(TRANSPARENT);
}
case CTLCOLOR_DLG:
{
CBrush*     back_brush;
COLORREF    color;
color = (COLORREF) GetSysColor(COLOR_BTNFACE);
back_brush = new CBrush(color);
return (HBRUSH) (back_brush->m_hObject);
}
}
return(CFormView::OnCtlColor(pDC, pWnd, nCtlColor));
}
还没有试过,不知道行不行.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VC++更改对话框背景色和字体颜色
VC画图-2
在窗口中绘图
VC中CDC与HDC的区别以及二者之间的转换
内存DC
使用CDC的四个派生类CClientDC,CPaintDC,CWindowDC,CMetaFileD
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服