一副BMP图像,经过旋转以后,长宽必然增大,可是图像的内容不变,这样造成了很多冗余的区域,可是BMP文件一定是长方形的,现在我想将冗余的那部分区域变成背景的颜色,也就是说使这部分透明,就象PHOTOSHOP中的层一样,在上层对图像进行旋转或者形状变换后多余部分是用下层部分填充的.推而广之,我想显示一副指纹图像,现在我想对感兴趣的那部分椭圆区域显示,而其他部分均是透明的,请问怎么办?最好给出源码,小人不胜感谢
解决方案 »
- 200分全部送出 一共三贴一样 遍历网页元素的问题 急急急
- vC连接数据库,界面问题
- 来取分吧
- google trends 一下主流GUI类库 结果出人意料
- 这个二值化感觉有问题呀,请指点
- RichEdit里使用EN_UPDATE对录入的汉字进行变色。但界面重绘出了问题。
- 今天是端午节,我尽量使自己的语言文明。请大版主小版主都给我进来。为什么扣我这么多信誉分,给个理由先!!!!!!!!我没完!!!
- 在Delphi程序中如何检测计算机是否连上Internet?
- 如何用OLE DB创建客户数据库
- 请教一个调试问题
- 继承CFileDialog类,派生类的消息响应,有点急急急
- 如何实现这种效果?而不是用手工的方式?
且在上边的那张图片挖几个洞,用来显示下边的图片。
代码:
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);
}