界面——C++_MFC从入门到放弃(三)——显示图片

 详细知识点:DC,CDC和HDC的介绍 https://blog.csdn.net/yam_killer/article/details/7661449

设备描述表(DC):是Windows中的一种数据结构,它包含GDI(图形设备接口)需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。

通过设备描述表的句柄(HDC)访问DC数据结构:设备描述表是一种数据结构,它包括了一个设备(如显示器和打印机)的绘制属性相关的信息。所有的绘制操作通过设备描述表进行。设备描述表与大多WIN32结构不同,应用程序不能直接访问设备描述表,只能由各种相关API函数通过设备描述表的句柄(HDC)间接访问该结构。 

CDC是MFC的DC的一个类。CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄。     

如何编程:获取PIC的ID,通过该ID指向用户CRect,再通过该ID指向DC,通过CDC进行具体操作。

需要知道的类:
CWnd类是MFC的一个窗口类, 这个类里几乎封装了所有关于窗口操作的API函数
CRect类
CDC类

CImage image;
image.Load(_T("result.bmp"));//获取图资源

CWnd* pWnd;
pWnd = GetDlgItem(IDC_Image_2);    // 获取PIC的ID,即获取picture控件ID句柄

CRect rect_frame;
pWnd->GetClientRect(&rect_frame);    // 通过该ID指向用户CRect,即获取picture控件的区域CRect

CDC* pDC = pWnd->GetDC();    // 通过CDC进行具体操作
HDC hDC = pDC->m_hDC;

::SetStretchBltMode(hDC, HALFTONE);
::SetBrushOrgEx(hDC, 0, 0, NULL);

image.Draw(hDC, rect_frame);
ReleaseDC(pDC);//释放picture控件的DC
// 显示
/*
输入 
    CString strFilePath
    pic_ID IDC_Image_1
*/
CImage image;
image.Load(strFilePath);					// 获取图资源

CWnd* pWnd;
pWnd = GetDlgItem(IDC_Image_1);				// 获取picture控件ID句柄

CRect rect_frame;
pWnd->GetClientRect(&rect_frame);			// 获取picture控件的区域CRect

CDC* pDC = pWnd->GetDC();					// 获取picture控件的DC设备描述表——CDC是DC的一个类,CDC中包含HDC类型的句柄,HDC hDC = pDC->m_hDC;

pDC->SetStretchBltMode(STRETCH_HALFTONE);	//HALFTONE 保持不失真

image.Draw(pDC->m_hDC, rect_frame);

ReleaseDC(pDC);								//释放picture控件的DC

 

你可能感兴趣的:(#,机器视觉_GUI实现)