MFC显示JPG格式的图片(2-2)

3 创建图像接口对象

3.1 声明图像接口对象

IPicture表示图像接口,为对话框类创建一个访问权限为privateIPicture接口的指针:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值