MFC加载图片
1. 自适应方法
/* 自适应方法 */
CRect rect;
CRect rect1;
CImage image; //创建图片类
image.Load(picname); //根据图片路径加载图片
//获取Picture Control控件的大小
GetDlgItem(IDC_PICTURE)->GetWindowRect(&rect);//将窗口矩形选中到picture控件上
ScreenToClient(&rect);//将客户区选中到Picture控件表示的矩形区域内
GetDlgItem(IDC_PICTURE)->GetClientRect(&rect);
CWnd *pWnd=GetDlgItem(IDC_PICTURE);//获得pictrue控件窗口的句柄
pWnd->GetClientRect(&rect);//获取句柄指向控件区域的大小
CDC *pDC=pWnd->GetDC();//获得pictrue控件的DC
SetStretchBltMode(pDC->m_hDC,STRETCH_HALFTONE);
if(image.GetWidth()<=rect.Width() && image.GetHeight()<=rect.Width()) //图片小于控件区域,不缩放
{
rect1 = CRect(rect.TopLeft(), CSize(image.GetWidth(),image.GetHeight()));
image.StretchBlt(pDC->m_hDC,rect1,SRCCOPY);//将图片画到Picture控件表示的矩形区域
}
else
{
float xScale=(float)rect.Width()/(float)image.GetWidth();
float yScale=(float)rect.Height()/(float)image.GetHeight();
float ScaleIndex=(xScale<=yScale? xScale:yScale);
rect1 = CRect(rect.TopLeft(), CSize((int)image.GetWidth()*ScaleIndex,(int)image.GetHeight()*ScaleIndex));
image.StretchBlt(pDC->m_hDC,rect1,SRCCOPY);//将图片画到Picture控件表示的矩形区域
}
image.Draw(pDC->m_hDC, rect);//将图片绘制到picture表示的区域内
ReleaseDC(pDC);
2. 加载原图方法
/* 加载原图的方法*/
CImage image; //创建图片类
image.Load(picname); //根据图片路径加载图片
CRect rect;//定义矩形类
int cx = image.GetWidth();//获取图片宽度
int cy = image.GetHeight();//获取图片高度
GetDlgItem(IDC_PICTURE)->GetWindowRect(&rect);//将窗口矩形选中到picture控件上
ScreenToClient(&rect);//将客户区选中到Picture控件表示的矩形区域内
GetDlgItem(IDC_PICTURE)->MoveWindow(rect.left, rect.top, cx, cy, TRUE);//将窗口移动到Picture控件表示的矩形区域
CWnd *pWnd=GetDlgItem(IDC_PICTURE);//获得pictrue控件窗口的句柄
pWnd->GetClientRect(&rect);//获得pictrue控件所在的矩形区域
CDC *pDC=pWnd->GetDC();//获得pictrue控件的DC
image.Draw(pDC->m_hDC, rect); //将图片画到Picture控件表示的矩形区域
ReleaseDC(pDC);//释放picture控件的DC
MFC加载图片的更多相关文章
- MFC加载PNG图片并实现双缓冲
因为PNG包含Alpha通道,所以不同于BITMAP,在MFC中使用CImage类对其进行处理,通常使用load和draw成员函数. 所以标题的论述可以进一步解释为,使用CImage实现双缓冲. 通常 ...
- 【MFC】picture控件 两种有细微差别的动态加载图片方法
摘自:http://www.jizhuomi.com/software/193.html VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control) 分类标签: 编程入门 ...
- CSS3学习总结——实现瀑布流布局与无限加载图片相册
首先给大家看一下瀑布流布局与无限加载图片相册效果图: 一.pic1.html页面代码如下: <!DOCTYPE html> <html> <head> <me ...
- JQuery实现无刷新下拉加载图片
最近做的一个项目需要做页面无刷新下拉加载图片,调研了一番,大多都采用检测滚动条达到底部,然后利用ajax加载下一页数据对页面数据进行添加,根据这一逻辑,自己写了一个,具体代码如下: JQu ...
- android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目 Android-Universal-Image-Loader 或者 ignition 都是个很好的选择. 在这里把原来 ...
- ImageLoader加载图片
先导universal-image-loader-1.9.3包 在application配置 android:name=".MyApplication" intent权限 1 pa ...
- chrome (failed) net::ERR_INCOMPLETE_CHUNKED_ENCODING ashx 加载图片
chrome (failed) net::ERR_INCOMPLETE_CHUNKED_ENCODING ashx文件加载图片的方法,发现在chrome浏览器里面出了异常: (failed) ne ...
- 在QtCreator 2.1.0 下使用opencv231库加载图片并显示
在.pro中库连接如上图,具体规则正在学习,注意debug下连接*d.lib.release下链接.lib.没有d的. 如果出现imread不可以加载图片,cvloadImage却可以,则是上面说的连 ...
- iOS两种方式加载图片的区别
加载图片的方式: imageNamed: imageWithContentsOfFile: 加载Assets.xcassets这里面的图片: 1> 打包后变成Assets.car 2> 拿 ...
随机推荐
- leetCode练题——7. Reverse Integer
1.题目: 7. Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1: I ...
- Springmvc-crud-07(springmvc标签错误)
错误:springmvc标签错误 原因:1.在springmvc中的form标签中没有绑定modelAttribute属性 2.必须要获取到参数(可以创建map对象,进行存储参数,再用modelAtt ...
- 通过颜色绘制图片UIImage
+ (UIImage *)clearImageView { UIColor *color=[UIColor clearColor]; CGRect rect =CGRectMake(,,,); UIG ...
- 关于ActiveMq的Exception occurred while processing this request, check the log for more information!问题
错误原因:jsp渲染的时候报错了.根本原因在于jdk版本和activemq版本的问题. 两种解决方案: 1.把jdk版本改为jdk1.7 2.activeMQ采用5.15,它依赖于jdk1.8
- 201771010135 杨蓉庆《面对对象程序设计(java)》第十六周学习总结
1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 一.理论知识 ⚫ 线程的概念 (1 ...
- git拉取代码
1,用sourcetree拉取的时候 遇到 fatal: repository 'http://gitlab.xxx.com/XXX/XXX.git/' not found 2,可以直接在要存放代码 ...
- SDNU_ACM_ICPC_2020_Winter_Practice_4th
H - Triangle 思路:用了斐波那契数列,因为数列中的任意三数都无法组成三角形,所以将1,2,3,,,n变成斐波那契数列就符合条件: #include <iostream> u ...
- flex布局构建大屏框架并支持翻页动画、滚动表格功能
本文将利用flex属性构建大屏可视化界面.界面主要分标题栏.工具栏.数据可视化窗口.其中,翻页动画以及滚动表格功能分别分布在数据可视化界面两侧. 鼠标点击标题,可看到左侧窗口翻转动画: 整体布局效 ...
- python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数。如果不存在这样一对整数,则输入一条消息进行说明。
python练习:编写一个程序,要求用户输入一个整数,然后输出两个整数root和pwr,满足0<pwr<6,并且root**pwr等于用户输入的整数.如果不存在这样一对整数,则输入一条消息 ...
- Django 字段中 null 和 blank的区别
blank 设置为 True 时,字段可以为空 设置为 False 时,字段是必须填写的 默认为 False null 设置为 True 时,数据库的字段允许为NULL,而且表单中的空值将会被存储为N ...