copy不规则图形 blt是不是只能copy矩形呀,如果想copy多边形(每个角都是直角),那该怎么做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 掩码. 要生成掩码图,然后 Blt(..., SRCAND); Blt(...,SRCPAINT); 先用SelectClipRgn指定不规则区域,然后再blt到这个窗口上这个clip region可以限定被覆盖的窗口的范围 给你一段代码,让你参考一个, 节选自我写的一个软件: // 创建掩码图 CClientDC dc(this); CDC dcmem; dcmem.CreateCompatibleDC(&dc); CBitmap bmp; CSize szbmp = GetPicSize(); bmp.CreateCompatibleBitmap(&dc, szbmp.cx, szbmp.cy); CBitmap* pob = dcmem.SelectObject(&bmp); dcmem.FillSolidRect(0,0,szbmp.cx, szbmp.cy, 0xffffff); dcmem.SelectStockObject(NULL_PEN); dcmem.SelectStockObject(BLACK_BRUSH); // 在白色掩码图上绘制黑色剪切区域 switch(m_iOpMode) { case 1: dcmem.Rectangle(&m_rcCut); break; case 2: dcmem.Ellipse(&m_rcCut); break; case 3: //dcmem.SetPolyFillMode(WINDING); dcmem.Polygon(m_apt.GetData(), m_apt.GetSize()); break; } CDC dcbmp; dcbmp.CreateCompatibleDC(&dc); CBitmap* odbmp = dcbmp.SelectObject(&m_bmp); // 将掩码位图与原图像进行或运算. dcbmp.BitBlt(0,0,szbmp.cx,szbmp.cy, &dcmem, 0,0,SRCPAINT); dcbmp.SelectObject(odbmp); Invalidate(); dcmem.SelectObject(pob); 两本书,二选一,看过的给推荐下吧 这俩个函数使用有什么限制吗?//例如第二个 100分求问:vc下如何截屏并保存成图片文件(在线等) 散分! 散分咯!散分咯!顺便推销一个网站 请高手帮忙,可使用CoInitialize(),但不能使用CoInitializeEx()? 散分要理由吗? 有否高手做过打印程序的,如果有请看一下 关于智能建筑的问题,请各位大虾指教! 救我!有关控件的外观 请问窗体最小化的消息是什么? 请教关于一个以二维数组为参数的参数传递问题,在线等,谢谢您的关注 哈哈 skinmagic2.21的问题?
这个clip region可以限定被覆盖的窗口的范围
// 创建掩码图
CClientDC dc(this);
CDC dcmem;
dcmem.CreateCompatibleDC(&dc);
CBitmap bmp;
CSize szbmp = GetPicSize();
bmp.CreateCompatibleBitmap(&dc, szbmp.cx, szbmp.cy); CBitmap* pob = dcmem.SelectObject(&bmp); dcmem.FillSolidRect(0,0,szbmp.cx, szbmp.cy, 0xffffff);
dcmem.SelectStockObject(NULL_PEN);
dcmem.SelectStockObject(BLACK_BRUSH); // 在白色掩码图上绘制黑色剪切区域
switch(m_iOpMode)
{
case 1:
dcmem.Rectangle(&m_rcCut);
break; case 2:
dcmem.Ellipse(&m_rcCut);
break;
case 3:
//dcmem.SetPolyFillMode(WINDING);
dcmem.Polygon(m_apt.GetData(), m_apt.GetSize());
break;
} CDC dcbmp;
dcbmp.CreateCompatibleDC(&dc);
CBitmap* odbmp = dcbmp.SelectObject(&m_bmp); // 将掩码位图与原图像进行或运算.
dcbmp.BitBlt(0,0,szbmp.cx,szbmp.cy, &dcmem, 0,0,SRCPAINT); dcbmp.SelectObject(odbmp); Invalidate(); dcmem.SelectObject(pob);