IPicture中获取图片的大小并转换成像素

MFC框选局部放大 MFC中用矩形框选中放大视图,可以用来参考一下 立即下载

原文地址:http://www.shenjk.com/detail/346

在前一篇文章中,设置JPG或GIF图片为背景图片时,需要获取图片的大小,

 OLE_XSIZE_HIMETRIC mWidth;
     OLE_YSIZE_HIMETRIC mHeight;
     //9 得到picture对象中图片的宽和高
     
     pPic->get_Width(&mWidth );
     pPic->get_Height( &mHeight );

double fX,fY;

 //10 GetDeviceCaps(HORZRES)得到屏幕的宽度(单位:像素)
     //    GetDeviceCaps(HORZSIZE)得到屏幕的宽度(单位:毫米)
    /double m_ncX=dc.GetDeviceCaps(HORZSIZE);
     fX = (double) dc.GetDeviceCaps(HORZRES) * (double)mWidth/((double)dc.GetDeviceCaps(HORZSIZE)*100.0); 
     fY = (double) dc.GetDeviceCaps(VERTRES) * (double)mHeight/((double)dc.GetDeviceCaps(VERTSIZE)*100.0);

采用这段代码,得到图片大小与图片实际像素不符,比实际像素要小.

换用以下代码则正确:

OLE_XSIZE_HIMETRIC mWidth;
     OLE_YSIZE_HIMETRIC mHeight;
     //9 得到picture对象中图片的宽和高
     
     pPic->get_Width(&mWidth );
     pPic->get_Height( &mHeight );
     CSize sz(mWidth,mHeight);
     dc.HIMETRICtoDP(&sz);
     
     CRect rc;
     GetClientRect( &rc );
     double fX,fY;

VC++读取图片显示出来 使用VC++读取图片可以显示出来,里面有封装DIB类 立即下载

相关推荐

MFC pictrue控件显示大图,带滚动条控制

MFC pictrue控件显示大图,带滚动条控制。已调试,可运行,可以作为例程参考。

IPicture总结

1、IPicture接口对象的创建         方法1:直接通过文件创建LPCSTR szFileUrl; IPicture *pIPicture; OleLoadPicturePath(CComBSTR(szFileUrl),    (LPUNKNOWN)NULL,    0,    0,    IID_IPicture,   (LPVOID*)&pIPicture))        方法2

crearo的专栏 1万+

java POI在excel中插入等比例缩放的图片

这个缩放的比例不是很准确,但还凑合能用,目前本人找不到其它方法,就先用这个。 先看一个关键的API方法:void org.apache.poi.ss.usermodel.Picture.resize(double scaleX, double scaleY),一定要清楚这个方法中的参数 scaleX scaleY 的比例是最终图片的宽高与单元格宽高的比例,不是与原图片宽高的比例。(而且当sc...

m0_37996243的博客 1万+

利用IPicture接口加载、显示图片

IPicture接口管理一个图片对象它的属性。图片对象提供对Bitmap Icon Metafile的语言不相关的抽象支持。图像对象的主要接口是IPictureIPictureDisp。IPictureDisp从IDispatch继承,提供了通过自动化访问图片属性的能力。图片对象可通过OleCreatePictureIndirect创建。关于IPicture支持的其他接口方法可以看MSDN,

博客搬往 http://begtostudy.cnblogs.com 1234

IPicture要注意的几个问题

IPicture<!-- .dispstyleH0{ font-size:28pt; font-weight:800; } .dispstyleH1{ font-size:16pt; font-weight:800; color:blue; } .dispstyleH2

crybird的C/C++ 1141

使用IPicture接口显示图片

以下代码使用IPicture接口显示图片,可直接放于OnDraw函数中。IPictrue接口支持BMP、DIB、EMF、GIF、ICO、JPG、WMF格式图片的显示,但只能保存BMPICO格式的图片。// pDoc为文档对象指针// pDC为设备描述表指针::CoInitialize(NULL);  // COM 初始化HRESULT hr;CFile file;file.Open(

junchieh 2177

IPicture::Render显示图片失真

//pPicture为IPicture类型 pPicture->Render(hDC, xSor, //输出位置的起始x坐标 ySor, //输出位置的起始y坐标 wDes, //输出位置的宽度 hDes, //输出位置的高度 0, nHeight, nWidth, -nHeight, NULL);         这个函

游子的足迹 2537

利用COM组件IPicture读取jpg、gif、bmp图片文件数据显示图片

1.读取图片数据 函数原型:bool LoadImage(const char *pName, unsigned char *pBitData); 函数功能,读取pName指向的图片文件的位图数据 bool LoadImage(const char *pName, unsigned char *pBitData) {     HDC     hdcTemp; // DC用来保存位图     ...

weixin_34029680的博客 239

将JPG图片绘制在对话框背景上:(这段代码绝对可以执行)

将JPG图片绘制在对话框背景上: 显示JPG图片的函数 void CMyDlg::ShowPicture(CDC *pDC, CString m_strBRoute, int x, int y, int width, int height) { HANDLE hFile = Creat...

weixin_30371875的博客 124

显示内存中图片方法总结

图片文件的存在形式不总是文件形式,有时可能是内存块、也有可能是字节流,比如保存于数据库中的某一图片,用GetChunk方法读取出来后一般保存在一个预先分配的内存块中,我们知道内存块的首地址,内存块的大小,要把这样的图片显示出来,可以自己编写函数按文件结构解析数据,但未免太麻烦,也是没有意义的“制造轮子”的重复工作,不如用windows系统自带的Ipicture的COM组件显示图片来得更简便些。下

1042

MFC显示JPG、JIF图片

注:此代码不存在内存泄露,很好的代码控件ID: picture控件:IDC_STATIC_IMG 路径编辑框:IDC_TXT_PATH界面如下图所示://************************************ // 方法说明: 显示JPGGIF、BMP图片 // 参数说明: CDC * pDC 设备环境对象 // 参数说

GoJawee的博客 757

基于C++的任意格式图片显示及RGB读取

我们见到的多的,用的多的可能都是通过位图去处理图象,但实际中位图不多,很多时候不得不将其它格式的图片转为位图才能处理图象,然而其它格式转为位图会损失图象的质量,转过来的位图比上原图质量损失严重,这对图象处理也会带来很大干扰。解决了直接读取任何格式图像的像素值也就解决了图象质量损失的危害,这也会给我们处理图像时带来很大便利。

StarRain2016 8750

利用com组件读取jpg格式图片

void CFindPicDlg::ShowPic(CString strName, CDC* pDc){ ::CoInitialize(NULL); // COM 初始化 HRESULT hr; CFile file; file.Open(strName, CFile::modeRead | CFile::shareDenyNone); // 读入文件内容 UL

我花开后百花残 644

C++显示JPG图片

::CoInitialize(NULL); // COM 初始化 HRESULT hr; CFile file; file.Open( "c:\\aa.jpg", CFile::modeRead | CFile::shareDenyNone ); // 读入文件内容 DWORD dwSize = file.GetLength(); HGLOBAL hMem = ::GlobalAl

没难度、有态度、不泄气、不放弃 8789

vc gdi+缩放图片

VC下显示JPG,BMP,GIF等图像格式(转载) 方法一:用COM组件的 IPicture接口(VC) 方法二:用GDI+(VC) EVC下显示图片 用COM组件的 IPicture接口(VC) 在OnPaint   或 OnDraw中加入下代码即可 (注意 屏蔽掉 CXXDialog::OnPaint CXX::OnDraw) dc.SetBkMod

AwillAway的专栏 8021

MFC显示JPG图片

参考文章:http://blog.csdn.net/crearo/article/details/1328974 ----------------------------------------------------------------------------------------------- 效果截图:

friendan的专栏 3万+
上一篇: IPicture::Render参数中的坐标关系
下一篇: 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片的两个函数
haah1221
博客等级 码龄18年 6粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值