图像的镂空显示

qqhuangshen 2004-12-27 08:05:27
一副BMP图像,经过旋转以后,长宽必然增大,可是图像的内容不变,这样造成了很多冗余的区域,可是BMP文件一定是长方形的,现在我想将冗余的那部分区域变成背景的颜色,也就是说使这部分透明,就象PHOTOSHOP中的层一样,在上层对图像进行旋转或者形状变换后多余部分是用下层部分填充的.推而广之,我想显示一副指纹图像,现在我想对感兴趣的那部分椭圆区域显示,而其他部分均是透明的,请问怎么办?最好给出源码,小人不胜感谢
...全文
243 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
night__cat 2004-12-29
  • 打赏
  • 举报
回复
图象旋转长宽怎么会变宽呢?
老夏Max 2004-12-29
  • 打赏
  • 举报
回复
参考:http://www.vckbase.com/document/viewdoc/?id=541
老夏Max 2004-12-29
  • 打赏
  • 举报
回复
参考:http://www.vckbase.com/document/viewdoc/?id=1345
Kudeet 2004-12-29
  • 打赏
  • 举报
回复
直接用BitBlt的最后一个参数用辆次SRCAND SRCPAINT就能楼空,或者用DirectDraw的颜色键
MuseIn 2004-12-29
  • 打赏
  • 举报
回复
呵呵,学习了
world666 2004-12-29
  • 打赏
  • 举报
回复
将位图与背景图按位与。
I_Love_CPP 2004-12-27
  • 打赏
  • 举报
回复
hehe..., the codes below helps:

设置并叠加透明图片的,就是说一张图片做底在客户区,然后另一涨在其上边,
且在上边的那张图片挖几个洞,用来显示下边的图片。
代码:
void CTransparentPicView::DrawTransparent(CDC *pDC, int x, int y, COLORREF crColour)
{
COLORREF crOldBack=pDC->SetBkColor(RGB(255,255,255));
COLORREF crOldText=pDC->SetTextColor(RGB(0,0,0));
CDC dcImage, dcMask;
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP2);
BITMAP bm;bmp.GetBitmap(&bm);
int nWidth=bm.bmWidth,nHeight=bm.bmHeight;
dcImage.CreateCompatibleDC(pDC);
dcMask.CreateCompatibleDC(pDC);
CBitmap* pOldBitmapImage=dcImage.SelectObject(&bmp);
CBitmap bitmapMask;
bitmapMask.CreateBitmap(nWidth, nHeight, 1, 1, NULL);
CBitmap* pOldBitmapMask = dcMask.SelectObject(&bitmapMask);
dcImage.SetBkColor(crColour);
dcMask.BitBlt(0, 0, nWidth, nHeight, &dcImage, 0, 0, SRCCOPY);
pDC->BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT);
pDC->BitBlt(x, y, nWidth, nHeight, &dcMask, 0, 0, SRCAND);
pDC->BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT);
dcImage.SelectObject(pOldBitmapImage);
dcMask.SelectObject(pOldBitmapMask);
pDC->SetBkColor(crOldBack);
pDC->SetTextColor(crOldText);
}

19,472

社区成员

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

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