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. 【http抓包】记录一次抓手机app的接口

    抓手机的接口地址,好用的工具很多,想 windows下的 Fiddler 和mac下的Charles 1. fiddler的设置教程是 http://jingyan.baidu.com/article ...

  2. 【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    导出数据接口的作用 在数据集成系统项目中,要么是自已集成其他厂家的设备,要么是其他厂家集成自己 ...

  3. javascript 函数初探 (四)--- 回调函数

    回调函数 既然函数与任何被赋值给变量的数据是相同的,那么她当然可以像其他数据那样被定义.删除.拷贝,以及当成参数传递给其它函数. 我们定义一个函数,这个函数有两个函数类型的参数,然后他会分别执行这两个 ...

  4. 自己写一个 jQuery 插件

    我知道这一天终将会到来,现在,它来了. 需求 开发 SharePoint 的 CSOM 应用时,经常需要在网页上输出一些信息. 这种需求和 alert 的弹窗.F12 的断点查看信息的场景是不一样的: ...

  5. Android项目实战(二十七):数据交互(信息编辑)填写总结

    前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: 先写实现过程,想要学习的同学可以看看,不需要的同学可以直接拉到最下 ...

  6. 【代码笔记】iOS-替换电话号码中间4位为-号

    一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...

  7. Android Studio导入Vitamio多媒体开发框架

    PS:这篇笔记用于解决Android Studio导入Vitamio框架的问题.官网给出的相关说明过于简单,故整理这篇文章,希望能帮助到像我一样遇到这个问题的朋友. 开发学习建议参考农民伯伯的博客中的 ...

  8. 使用adjacent_difference要注意的小问题

    adjacent_difference的源与目的地可以相同,这是在标准中说明的,所以我产生了疑问,会不会因为这样使用而改变了当前成员,而影响下一步计算呢,经试验,在vs2015里并不会. #inclu ...

  9. Mac上idea快捷键

    名称 快捷键 代码提示 ctrl + space 自动修正 alt + enter 查看调用链call hierarchy ctrl + H 查找文件 双击shift 查找类 command + N ...

  10. 下一代Asp.net开发规范OWIN(3)—— Middleware

    Middleware是OWIN管道的基本组成单元,最后拼接的OWIN管道来处理客户端请求,输出网页.这篇文章,首先看看Web Form, MVC, Web API如何结合OWIN使用. 然后将如何编写 ...