3 创建图像接口对象
3.1 声明图像接口对象
IPicture表示图像接口,为对话框类创建一个访问权限为private的IPicture接口的指针:
IPicture* m_pPicture;
3.2 创建图像接口对象
之后,在对话框类的OnInitDialog()函数中,通过如下代码创建图像对象接口:
OleLoadPicture(
stream
, length
, TRUE
, IID_IPicture
, (LPVOID*)&m_pPicture
);
其中,OleLoadPicture()
函数的作用是创建一个图像接口对象,并且使用流对象的内容来初始化这个图像接口对象。其中参数
stream
是在“
2
创建流接口对象”中创建的流接口对象,该对象指向了内存中
JPG
图片;
length
表示从流对象中读取的字节数,即图片的大小;
TRUE
指定了
KeepOriginalFormat
的属性;
IID_IPicture
指定了创建的接口对象的
ID
;
m_pPicture
是创建的图像接口对象。
3.3 获取图像接口对象的属性
要通过图像接口对象显示图像,必须要获取图像接口对象的高度和宽度。
m_pPicture->get_Width(&m_width);
m_pPicture->get_Height(&m_height);
其中,m_width
和
m_height
都是对话框类的访问权限为
private
的成员函数。
OLE_XSIZE_HIMETRIC m_width;
OLE_YSIZE_HIMETRIC m_height;
其中,OLE_XSIZE_HIMETRIC
和
OLE_YSIZE_HIMETRIC
分别是
IPicture
接口的
Width
属性和
Height
属性的类型,其对应的
C++
类型为
long
。
最后,通过CFile::Close()关闭CFile对象。
file.Close();
4 显示图片
在对话框类的OnPaint()函数中实现图片的显示。通过IPicture接口的Render()函数实现。
CDC *dc = GetDC();
m_pPicture->Render(dc->m_hDC, 0, 0, (int)(m_width/26.45), (int)(m_height/26.45), 0, m_height, m_width, -m_height, NULL);
其中,通过GetDC()
函数获取到了当前设备上下文的指针
dc
。
IPicture::Render()
函数的作用是画指定的图像。该函数的第
1
个参数指定了当前设备上下文;第
2-3
个参数分别表示当前设备上下文中的位置的横纵坐标,该位置即为显示
JPG
文件的起始位置;第
4-5
个参数表示要显示的源图像的区域;第
6-7
个参数指定了源图像的位移;第
8-9
个参数指定了源图像的扩展宽度和高度;第
10
个参数
NULL
表示当前设备上下文不是元
DC
。
1366

被折叠的 条评论
为什么被折叠?



