【MFC】GDI绘图新手问题

wojiushi3344 2010-09-02 07:31:50
废话少说先发张图片,问题都在图片中的。

...全文
267 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucky-lucky 2010-09-03
  • 打赏
  • 举报
回复
帮顶,估计要一些数学知识了,这样做的都不完美,看看mathlab是否有很好的方法?
FireBirdCN 2010-09-03
  • 打赏
  • 举报
回复
GDI+中有 区域的集合运算 GDI中不晓得有没有
例如:(图像不能太大,背景必须为单色)
Bitmap bmp(L"米老鼠和唐老鸭.bmp");
Graphics graph(pDC->m_hDC);
graph.DrawImage(&bmp, 0, 0);
int w = bmp.GetWidth(), h = bmp.GetHeight();
Region rgn(Rect(0, 0, w, h));
Color col, col0;
bmp.GetPixel(0, 0, &col0); // 获取背景色 Image.GetPixel(x,y,&Color);
ARGB argb0 = col0.GetValue();
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
bmp.GetPixel(i, j, &col);
if (col.GetValue() == argb0) { // ARGB可直接比较
Region pixelRgn(Rect(i, j, 1, 1)); // 单像素矩形(x,y,高,宽)
rgn.Exclude(&pixelRgn); // 挖去
}
}
}
graph.TranslateTransform(REAL(w), 0.0f);
graph.FillRegion(&SolidBrush(Color::Green), &rgn); // 容易溢出???


可参考 陈宝楷_GDI+.doc 这个文档中 129页~
wojiushi3344 2010-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 badu_123 的回复:]
用光栅操作码为SRCAND的BitBlt将“与遮罩”复制到目的DC。
用光栅操作码为SRCAND的BitBlt将“与遮罩”的反位图复制到图像DC。
用光栅操作码为SRCPAINT的BitBlt将图像DC复制到目的DC。
用BitBlt将目的DC的内容复制到屏幕中适当的地方。
[/Quote]

能不能说清楚点,不是很明白!
zhou1xp 2010-09-02
  • 打赏
  • 举报
回复
3楼的做法很好
Rain_yun 2010-09-02
  • 打赏
  • 举报
回复
图1跟2相与
三壮 2010-09-02
  • 打赏
  • 举报
回复
用光栅操作码为SRCAND的BitBlt将“与遮罩”复制到目的DC。
用光栅操作码为SRCAND的BitBlt将“与遮罩”的反位图复制到图像DC。
用光栅操作码为SRCPAINT的BitBlt将图像DC复制到目的DC。
用BitBlt将目的DC的内容复制到屏幕中适当的地方。
stardawn 2010-09-02
  • 打赏
  • 举报
回复
图2图1合在一起 然后选入hdctemp 用下面的函数应该可以
BitBlt(hdcdst,xpos,ypos,width,height/2,hdctemp,width,height/2,SRCAND);
BitBlt(hdcdst,xpos,ypos,width,height/2,hdctemp,width,0,SRCPAINT);
luocw110 2010-09-02
  • 打赏
  • 举报
回复
应该不难啊,两张图都读进来之后, 通过循环判断图片1中白色区域四个顶点的坐标,得到图片3的大小,
以此开辟图3的数据存储空间,把图2的内容写进去就可以了

15,979

社区成员

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

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