请大家帮我看看错误在哪里?

一蜉蝣 2013-04-13 09:18:03
我现在在一个对话框上放了一个静态图片控件(IDC_PICTURE),然后需要在该静态图片控件内绘制出交叉的方格的背景。
我的做法:
首先在对话框的初始化函数中加入以下代码:

然后在对话框的OnPaint()函数中加入以下代码

但是运行结果却是这样的:

运行结果中静态图片控件 虽然只是被黑色的背景完全填充,但是交叉的方格线却只填充了一部分,怎么办?我找不到BUG在哪儿?
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wawLwxj 2013-04-14
  • 打赏
  • 举报
回复
在你获取完rect之后 CRect rc2; rc2.left = 0; rc2.top = 0; rc2.width() = rect.width(); rc2.heigh() = rect.heigh(); m_memDc.FillRect(rc2,&brush); 你试试
一蜉蝣 2013-04-14
  • 打赏
  • 举报
回复
引用 7 楼 Mackz 的回复:
请重载控件,在控件中绘制,不要在对话框绘制控件内部!另外CPaintDC只能在WM_PAINT消息(OnPaint)中使用。 请参见我的回复
老师,看了你的回复,您的经验实在是太丰富了。 有个不情之请:想请您帮我完善一下程序的一个小功能。我的是开发环境是VS2012,我看你也用的2012,不知道方便吗?方便的话您给我发封邮件,我把工程发给你,邮件中我会详细介绍一下,明天就毕业设计中期检查了……谢谢!我的邮箱quuogo@gmail.com
一蜉蝣 2013-04-14
  • 打赏
  • 举报
回复
引用 2 楼 VisualEleven 的回复:
C/C++ code?1234567891011CClientDC dc(GetDlgItem(IDC_PICTURE)); CRect rect; GetDlgItem(IDC_PICTURE)->GetClientRect(rect); //ScreenToClient(rect); m_memDC.CreateCompatibleDC(&am……
谢谢您,感觉您的方法应该是对的,但是我修改后运行直接什么都不显示了……
schlafenhamster 2013-04-14
  • 打赏
  • 举报
回复
“在对话框绘制控件内部”要获得控件的 DC ,不是对话框的 DC
菜牛 2013-04-14
  • 打赏
  • 举报
回复
请重载控件,在控件中绘制,不要在对话框绘制控件内部!另外CPaintDC只能在WM_PAINT消息(OnPaint)中使用。 请参见我的回复
一蜉蝣 2013-04-14
  • 打赏
  • 举报
回复
引用 3 楼 wxj198904 的回复:
m_memDc.FillRect(rect,&brush); rect的区域不对!
根据运行的结构看 应该是rect的区域不对,那么该怎么设置呢?麻烦能说的详细一点吗?
wawLwxj 2013-04-13
  • 打赏
  • 举报
回复
m_memDc.FillRect(rect,&brush); rect的区域不对!
Eleven 2013-04-13
  • 打赏
  • 举报
回复

CClientDC dc(GetDlgItem(IDC_PICTURE));
	CRect rect;
	GetDlgItem(IDC_PICTURE)->GetClientRect(rect);
	//ScreenToClient(rect);
	m_memDC.CreateCompatibleDC(&dc);
	m_bitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
	m_memDC.SelectObject(&m_bitmap);

	m_memDC.SetBkColor(RGB(0, 0, 0));
	CBrush brush(HS_CROSS, RGB(0, 128, 0));
	m_memDC.FillRect(rect, &brush);

CPaintDC dc(GetDlgItem(IDC_PICTURE));
	CRect rect;
	GetDlgItem(IDC_PICTURE)->GetClientRect(rect);
	//ScreenToClient(rect);
	dc.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &m_memDC, 0, 0, SRCCOPY);
一蜉蝣 2013-04-13
  • 打赏
  • 举报
回复
其中的m_memDc和m_bitmap我都设置为对话框对象的成员变量

15,980

社区成员

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

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