IPicture* ppic = NULL;
HRESULT hr; hr = OleLoadPicturePath((CComBSTR)picpath.GetBuffer(),(LPUNKNOWN)NULL,0,0,IID_IPicture,(LPVOID*)&ppic);
if (SUCCEEDED(hr))
{
(CStatic*)(ctrlpwnd)->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
CDC* pdc = ctrlpwnd->GetDC(); CRect rect;
ctrlpwnd->GetWindowRect(&rect);
pwnd->ScreenToClient(&rect); OLE_XPOS_HIMETRIC xSrc = 0; // 图片中当前显示区域的x
OLE_YPOS_HIMETRIC ySrc = 0; // 图片中当前显示区域的y
OLE_XSIZE_HIMETRIC cxSrc = rect.Width(); // 图片中当前显示区域的宽度
OLE_YSIZE_HIMETRIC cySrc = rect.Height(); // 图片中当前显示区域的高度
ppic->get_Width(&cxSrc);
ppic->get_Height(&cySrc); (ppic->Render(*pdc,0,0,rect.Width(),rect.Height(),0,cySrc,cxSrc,-cySrc,&rect)); ppic->Release();
pwnd->ReleaseDC(pdc);
ppic = NULL;

可以加载 jpg,bmp。

IPicture::Render简介

HRESULT Render( HDC hdc, //Handle of device context on which to render the image

long x, //Horizontal position of image in hdc

long y, //Vertical position of image in hdc

long cx, //Horizontal dimension of destination rectangle

long cy, //Vertical dimension of destination rectangle

OLE_XPOS_HIMETRIC xSrc,            //Horizontal offset in source picture

OLE_YPOS_HIMETRIC ySrc,            //Vertical offset in source picture

OLE_XSIZE_HIMETRIC cxSrc,            //Amount to copy horizontally in source picture

OLE_YSIZE_HIMETRIC cySrc,            //Amount to copy vertically in source picture

LPCRECT prcWBounds            //Pointer to position )

x,y,cx,cy分别是指在屏幕上显示的左上角和右下角;

xsrc,ysrc,cxsrc,cysrc分别是指图片的大小,所以屏幕上长宽的比例和图片长宽的比例是一样的。

有一点令人不解 0,hmHeight,hmWidth,-hmHeight对应于xsrc,ysrc,cxsrc,cysrc,并不是以0,0开头。(否则图片的方向会错误)

prcWBounds 一般赋值为NULL。

MFC---static控件加载图片的更多相关文章

  1. MFC Picture控件加载图片

    CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE); CBitmap bitmap; bitmap.LoadBitmapW(IDB_BITMAP2); ...

  2. paip.gui控件tabs控件加载内容的原理以及easyui最佳实现

    paip.gui控件tabs控件加载内容的原理以及easyui最佳实现 //////////////tabs控件的加载 同form窗体一样,俩个方式 两个方式:一个是url,简单的文本可以使用这个,不 ...

  3. C#拖曳控件加载,bll报错问题

    C#拖曳控件加载,bll报错问题,加载时实例如化bll时加上一个判断 if (!(GetService(typeof(IDesignerHost)) != null            || Sys ...

  4. C#窗体加载和控件加载不同步导致控件闪烁

    窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题        protected override CreatePara ...

  5. 关于4A网络安全管控平台控件加载失败的解决方法

    最近电脑重装系统后,到公司登录4A管控平台提示"控件加载失败","无效的参数为:Null","点击资源无任何反映"等等问题 别人的电脑用的好 ...

  6. MFC-----在MFC中使用Picture控件加载任意图片

    对于刚刚接触OpenCV的童鞋来说,如何在MFC中加载并显示一张图片.应该是初期必定会碰到的问题之一.因此本文在分享这方面经验的同时,也相当于是写给自己的一份备忘录. 本文使用的是OpenCV2.1+ ...

  7. delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

    procedure TForm1.Button1Click(Sender: TObject);var  jpg: TJPEGImage; // 要use Jpeg单元begin  // 显示jpg大图 ...

  8. [转]Delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

    procedure TForm1.Button1Click(Sender: TObject); var jpg: TJPEGImage; // 要use Jpeg单元 begin // 显示jpg大图 ...

  9. 利用MFC Picture Control控件 加载bmp,png

    1.在资源视图,选择PictureControl,并且在属性中把Type设置为Bitmap. 2.加载PNG CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC) ...

随机推荐

  1. 从零开始学 Java - Windows 下安装 JDK

    关于未来 "我要死在火星.在我死去的时候能够想着人类能有一个美好的未来--有可持续的能源,同时能够殖民其他的星球来避免人类灭绝的最坏可能." 官网下载 直接打开官网:http:// ...

  2. 【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务.数 ...

  3. AMD and CMD are dead之KMDjs内核之依赖分析

    有人说js中有三座大三:this.原型链和scope tree,搞懂了他们就算是js成人礼.当然还有其他不同看法的js成人礼,如熟悉js的:OOP.AP.FP.DOP.AOP.当然还听说一种最牛B的j ...

  4. Android开发7:简单的数据存储(使用SharedPreferences)和文件操作

    前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...

  5. VS2015下编译64位GDAL总结

    使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...

  6. VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试

    [提示] 1. 阅读文本前希望您具备如下知识:了解单元测试,了解Dynamic,熟悉泛型(协变与逆变)和Lambda,熟悉.NET Framework提供的 Action与Func委托.2.如果您对单 ...

  7. How To Collect ULS Log from SharePoint Farm

    We can use below command to collect SharePoint ULS log from all servers in the Farm in PowerShell. M ...

  8. Android中的AlertDialog使用示例四(多项选择确定对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  9. 一起来学习android自定义控件3——边缘凹凸的View

    前言 最近做项目的时候遇到一个卡劵的效果,由于自己觉得用图片来做的话可以会出现适配效果不好,再加上自己自定义view方面的知识比较薄弱,所以想试试用自定义View来实现.先看设计图效果 实现分析 上面 ...

  10. SDWebImage的使用

    - setItem:(CustomItem *)item { _item = item; // 占位图片 UIImage *placeholder = [UIImage imageNamed:@&qu ...