基于对话框的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控件的大小相吻合? 展开
{
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控件的大小相吻合? 展开
展开全部
使用pPictureWnd的GetWindowRect获取rctClient即可。
不要搞那么多映射/原点什么的,那样会使绘图更复杂,而在你这里也没有什么意义。
不要搞那么多映射/原点什么的,那样会使绘图更复杂,而在你这里也没有什么意义。
更多追问追答
追问
改了之后,画的线被Pictrue控件盖住了,怎么办?
追答
CDC* pDC = pPictureWnd->GetDC();
这个样子的不应该盖住。。。
如果你获取的是对话框的DC,那盖住了很正常。
如果只是划线画图,而不导入JPG之类的,建议你不使用picture控件,而是一个无线条的静态框(完全隐藏了,只是用来GetRect)来控制划线画图区域,会非常舒服。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询