有问题...关于贴图遮盖

chemo 2004-08-26 02:52:57
以下是一段实现透明贴图的代码,好象有问题,请高手改正
// 创建单色掩码位图
hMaskBitmap = CreateBitmap(nWidth, nHeight, 1, 1, NULL);
SelectObject(hMaskDC, hMaskBitmap);
BitBlt(hMaskDC, 0, 0, nWidth, nHeight, hMemDC, 0, 0, SRCCOPY);
SetBkColor(hMaskDC, RGB(255, 255, 255));
SetTextColor(hMaskDC, RGB(0, 0, 0));

// 前景图背景置黑
SetBkColor(hMemDC, RGB(0, 0, 0));
SetTextColor(hMemDC, RGB(255, 255, 255));
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hMaskDC, 0, 0, SRCAND);

// 贴上前景图
SetBkColor(hdc, RGB(255, 255, 255));
SetTextColor(hdc, RGB(0, 0, 0));
BitBlt(hdc, x, y, nWidth, nHeight, hMaskDC, 0, 0, SRCAND);
BitBlt(hdc, x, y, nWidth, nHeight, hMemDC, 0, 0, SRCPAINT);
...全文
79 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2004-08-27
  • 打赏
  • 举报
回复
透明贴图是这样做的吗?要自己做个黑色背景的图片来的。
或者,用TransparentBlt()就可以了。
lambochan 2004-08-26
  • 打赏
  • 举报
回复
hMaskBitmap = CreateBitmap(nWidth, nHeight, 1, 1, NULL);
HBITMAP hOld = (HBITMAP)SelectObject(hMaskDC,hMaskBitmap);
//制造mask,RGB为需要滤掉的背景色,这里是白色,实际颜色自己设置
SetBKColor(hMemDC,RGB(255,255,255));
BitBlt(hMaskDC,0,0,nWidth,nHeight,hMemDC,0,0,SRCCOPY);
//透明显示
BitBlt(hdc,0,0,nWidth,nHeight,hMemDC,0,0,SRCINVERT);
BitBlt(hdc,0,0,nWidth,nHeight,hMaskDC,0,0,SRCAND);
BitBlt(hdc,0,0,nWidth,nHeight,hMemDC,0,0,SRCINVERT);

lanstar200 2004-08-26
  • 打赏
  • 举报
回复
代碼太少了,看不出來

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧