基于对话框的MFC在picture控件上绘图

voidOUTPUT::OnPaint(){CPaintDCdc(this);//devicecontextforpaintingCRectrctClient;GetCl... void OUTPUT::OnPaint()
{
CPaintDC dc(this); // device context for painting

CRect rctClient;
GetClientRect(&rctClient);
CWnd* pPictureWnd = GetDlgItem(IDC_STATIC_graphic1);
CDC* pDC = pPictureWnd->GetDC();
pDC->SetMapMode(MM_LOMETRIC);//设置映象模式0.1mm
pDC->SetWindowOrg(1350,750);//设置窗口原点(即窗口的中心点)
pDC->SetViewportOrg(rctClient.right/2,rctClient.bottom/2);//设置视口原点
pDC->DPtoLP(&rctClient);//按0.1mm比例的倒数放大了
pDC->FillSolidRect(rctClient,RGB(127,127,250));//设置背景色
代码如上,怎样使矩形框正好与picture控件的大小相吻合?
展开
 我来答
bhtzu
2013-01-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4191万
展开全部
使用pPictureWnd的GetWindowRect获取rctClient即可。
不要搞那么多映射/原点什么的,那样会使绘图更复杂,而在你这里也没有什么意义。
更多追问追答
追问
改了之后,画的线被Pictrue控件盖住了,怎么办?
追答
CDC* pDC = pPictureWnd->GetDC();
这个样子的不应该盖住。。。
如果你获取的是对话框的DC,那盖住了很正常。
如果只是划线画图,而不导入JPG之类的,建议你不使用picture控件,而是一个无线条的静态框(完全隐藏了,只是用来GetRect)来控制划线画图区域,会非常舒服。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式