导航:首页 > 净水问答 > mfc图片颜色过滤

mfc图片颜色过滤

发布时间:2022-10-24 21:05:02

⑴ 用mfc怎么把位图用背景色擦掉

画一个长方形把它遮住。或者试试用刷新屏幕函数。

⑵ MFC中图片处理问题:怎么让图片中的白色部分设置为背景色

透明色问题,刚好我做过
先跟你说下步骤:
1、创建一张大小与需要绘制图像相同的位图作为“掩码”位图;
2、将新创建的“掩码”位图存储至掩码位图的设备描述表中;
3、把位图设备描述表的背景设置成“透明色”,即不需要显示的颜色;
4、复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;
5、把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;
6、把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作;
7、最后一步重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;
8、当然最后不要忘记了把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指针,最后把新建的设备描述表也删除;

具体代码如下显示,这段代码只是截取了在WM_PAINT消息中对话框客户区画图的部分,位图的加载和删除分别写在OnInitDialog()函数和析构函数中;

CDC imgDC, maskDC; //定义存储位图的位图设备描述表imgDC和存储掩码位图的掩码位图
//设备描述表maskDC
CRect rcWnd, rcPic;
imgDC.CreateCompatibleDC(NULL); //初始化设备描述表
maskDC.CreateCompatibleDC(NULL); //初始化设备描述表
CBitmap bmpMask;
BITMAP bm;

m_bmpSample.GetBitmap(&bm);
GetClientRect(rcWnd);

rcPic.left = (rcWnd.Width() - bm.bmWidth)/2;
rcPic.right = rcPic.left + bm.bmWidth;
rcPic.top = (rcWnd.Height() - bm.bmHeight)/2;
rcPic.bottom = rcPic.top + bm.bmHeight;

bmpMask.CreateBitmap(bm.bmWidth, bm.bmHeight, 1, 1, NULL); //初始化掩码位图
CBitmap * pOldBmp = imgDC.SelectObject(&m_bmpSample); //存储位图至位图设备描述表
CBitmap * pOldMaskBmp = maskDC.SelectObject(&bmpMask); //存储掩码位图至掩码位图
//设备描述表
imgDC.SetBkColor(RGB(255, 255, 0)); //设置位图设备描述表的背景色为透明色
maskDC.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &imgDC, 0, 0, SRCCOPY);
dc.BitBlt(rcPic.left, rcPic.top, bm.bmWidth, bm.bmHeight, &imgDC, 0, 0, SRCINVERT);
dc.BitBlt(rcPic.left, rcPic.top, bm.bmWidth, bm.bmHeight, &maskDC, 0, 0, SRCAND);
dc.BitBlt(rcPic.left, rcPic.top, bm.bmWidth, bm.bmHeight, &imgDC, 0, 0, SRCINVERT);

imgDC.SelectObject(pOldBmp);
maskDC.SelectObject(pOldMaskBmp);
bmpMask.DeleteObject();
pOldBmp = NULL;
pOldMaskBmp = NULL;

DeleteDC(imgDC);
DeleteDC(maskDC);

⑶ MFC里的图片显示的颜色不对

看你的界面是经典的VC6啊。
在画图打开图片另存为bmp。
然后在mfc资源中导入bmp图片,ID为IDC_BITMAP
拖一个Picture控件,选择图片ID为IDC_BITMAP就行了。

⑷ mfc如何给指定的区域图形变色

在MFC填充矩形颜色方法如下:
//在界面内定义一个矩形,界面大小在框架类中已定义
RECT Rect1;
Rect1.left = 55;
Rect1.top = 40;
Rect1.right = 970;
Rect1.bottom = 290;

//定义一个画刷
CBrush Brush(RGB(0,0,0));

//用画刷填充矩形
pDC->FillRect (&Rect1,&Brush);

⑸ MFC的文件对话框过滤器怎么设置

CFileDialog::CFileDialog

CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL
);

参数: bOpenFileDialg 如果为TRUE, 则创建文件打开对话框;如果为FALSE,则构造一个File Save As(另存为)对话框。
lpszDefExt 缺省文件扩展名,如果用户在文件名编辑框中不包含扩展名,则lpszDefExt定义的扩展名自动加到文件名后。如果为NULL,则不添加扩展名。
lpszFileName 初始显示于文件名编辑框中的文件名,如果为NULL,则不显示初始文件名。
dwFlags 一个或多个标志的组合,使你可定制对话框。要了解这些标志的描述,可参阅联机文档“Win32 SDK”中的OPENFILENAME结构。如果你改变m_ofn.Flags结构成员,在改变中用OR操作保持缺省行为完整。
lpszFilter 一列字符串对,指定可以应用到文件的过滤器。如果指定过滤器,仅被选择的文件显示于文件列表框中。请参阅说明部分,了解如何使用过滤器。
pParentWnd 指向文件对话框对象的父窗口或拥有者窗口。

说明:
调用此成员函数构造一个标准Windows文件对话框对象,或构造一个打开对话框或构造一个存盘对话框,根据bOpenFileDialog的值决定。
OFN_ALLOWMULTISELECT标志。你应提供文件名缓冲区来放置返回的多个文件名的列表,这通过用一个分配了的缓冲区指针替换m_ofn.lpstrFile来实现,要在创建了CFileDialog之后调用DoModal之前进行此操作。另外,必须用m_ofn.lpstrFile指向的缓冲区字节数来设置m_ofn.nMaxFile。
为使用户用鼠标或键盘改变一个Explorer风格对话框的大小,设置OFN_ENABLESIZING标志,这仅当你提供一个钩子进程或定制模板时才有必要设置。此标志仅与一个Explorer风格的对话框一起工作,旧风格的对话框不可改变大小。
lpszFilter参数用于判断文件名类型及文件列表框中哪些可被显示。双字符串的第一个字符串描述过滤器,第二个串表明使用的文件扩展名,多重扩展可用“;”来指定。字符串由两个“|”字符结尾,最后是一个NULL。也可使用CString对象作为参数。
例如,Mirosoft Excel 允许用户用.XLC扩展名(表)或.XLS(工作表)打开文件,Excel过滤器应如下:
static char BASED_CODE szFilter[] =
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";

⑹ MFC里的图片显示的颜色不对

直接读取图片的路径然后显示出来试试

⑺ MFC图像处理中背景颜色设置的问题

因为透明背景,所以原来的绘图不会被擦掉。
你先输出几个空格,把原来的擦掉,再输出数字即可。

阅读全文

与mfc图片颜色过滤相关的资料

热点内容
江淮和悦b15空调滤芯怎么更换 浏览:826
那种企业产生有机废水 浏览:542
柠檬酸怎么除垢 浏览:959
处理一吨废水要多少陶粒 浏览:76
兰州实验室废水处理设备 浏览:142
小米滤芯怎么看里面脏不脏 浏览:101
宝来传奇怎么更换空气滤芯 浏览:507
屠宰废水用什么絮凝剂好 浏览:127
水蒸气蒸馏法实验报告讨论 浏览:573
葡萄酒过滤后能否沾水 浏览:66
废水比如何使用 浏览:900
蒸馏所需要的实验步骤 浏览:349
超滤污染物去除率 浏览:160
进口网管式反渗透膜采购 浏览:434
农村建房要不要进行污水处理 浏览:508
滤芯怎么用不会坏 浏览:433
ppuf超滤膜 浏览:366
氨氮废水反渗透膜 浏览:497
树脂材质的衣柜安全吗 浏览:729
超滤与反渗透有什么区别 浏览:738