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

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控件的大小相吻合?

使用pPictureWnd的GetWindowRect获取rctClient即可。
不要搞那么多映射/原点什么的,那样会使绘图更复杂,而在你这里也没有什么意义。追问

改了之后,画的线被Pictrue控件盖住了,怎么办?

追答

CDC* pDC = pPictureWnd->GetDC();
这个样子的不应该盖住。。。
如果你获取的是对话框的DC,那盖住了很正常。
如果只是划线画图,而不导入JPG之类的,建议你不使用picture控件,而是一个无线条的静态框(完全隐藏了,只是用来GetRect)来控制划线画图区域,会非常舒服。

追问

如果用一个无线条的静态框,怎样调整背景颜色呢?

追答

呵呵,FillSolidRect不就是背景了?

温馨提示:内容为网友见解,仅供参考
无其他回答

MFC 在picture控件中画图可是不显示20分在线等急急急急
oninitdialog是对话框初始化函数,这个函数被调用后,默认会调用一次Invalidate,触发重绘。因此在该函数内的绘图操作是无效的,重绘会调用Onpaint函数,将这里的绘图覆盖掉,不要在这里调用OnPaint。如果这个代码在标准的消息WM_PAINT重载函数OnPaint中(通过ClassWizard等重写得到),那么代码本身没有问题,在...

MFC picture 控件上画图。
你已经做好了大部分的工作了,只差在控件上显示了。只需要再加句UpData(FALSE)就可以了。备注:UpData(true);把控件内容装入控件变量.即是说:当用户对控件作了操作,控件内容发生了改变,可以通过该函数加true参数实现同步。UpData(false);用控件变量的值更新控件。即是说:当程序中变量由于执行流程...

MFC中如何在一个picture 控件中显示一张opencv读入的图片?
IplImage* img_src = cvLoadImage("img4.jpg",CV_LOAD_IMAGE_GRAYSCALE);这里失败了;图片路径用绝对路径试试;或者获取一下程序所以目录,再加上文件名;

MFC picture控件画坐标系
1. 直接在对话框的WM_PAINT画, 不用PICTURE;2.或者OVERRIDE一个PICTURE, 在它的WM_PAINT里画.3.更好的作法是OVERWRITE的一个CButton,4.最后的是OVERRIDE一个CWND, 用CS_CLASSDC;别气馁, 接着来, 你对WIDDOWS GUI还需多了解.

...通过对话框上打开按钮,批量打开并在picture控件上连续显示位图文件...
设计一个定时器,使得图片定时更换就行啦,SetTimer函数,响应WM_Timer消息

如何在 MFC picture控件上绘制一个坐标系?
CWnd* pPictureWnd = GetDlgItem(IDC_PICTURE1);CDC* pdc = pPictureWnd->GetDC();pdc->MoveTo( 10, 10);pdc->LineTo( 100, 10);pdc->MoveTo( 10, 10);pdc->LineTo( 10, 100);pPictureWnd->ReleaseDC(pdc);

如何用 VC(MFC)实现基于对话框的位图读取显示
1、将图像文件以资源形式加入工程中,IDB_BITMAP1 2、用一个PICTURE控件,在其属性中,将其Type设置为Bitmap 3、将Piture控件的属性中的Image设置为IDB_BITMAP1 运行

MFC如何在对话框的图片控件中显示真彩色图像
MFC图片控件的标准方法(在控件属性中指定资源ID)是不能显示真彩图像的,其默认最高支持是256色,也就是8bit位图。通过编程实现在对话框中显示真彩图像有两种方法:不使用图片控件,而是直接在对话框的DC上绘制,如果获取的是对话框的DC并通过静态框等获取区域(也可以指定区域),那么你的其它代码不需要...

在MFC中,如何读取外部的位图文件,让它显示在图片控件(Picture...
1.在你的对话框添一个按钮和一个图片控件(Picture Control).2.添加一个类,我这里上传不了,只能将.h和.cpp复制过来,你再将拷贝到txt里,改一下扩展名就可以了。这是Picture.h#if !defined(AFX_PICTURE_H__COPYFREE_BY_YOVAV_GAD__SOURCES_AT_SUPERMAIN_DOT_COM__INCLUDED_)#define AFX_PICTURE_H__...

怎么给MFC的对话框加背景图片
1、新建MFC应用程序。2、在应用程序中,选择基于对话框,其他保持默认即可。3、右击项目,选择添加-资源。4、在添加资源对话框中,点击导入,选择要作为背景的图片。5、在工具箱找到Picture控件,托到界面中。6、在界面上点击选中Picture控件,然后在属性的Type下拉框中,选择Bitmap。7、再在Picture控件的...

相似回答