根据MFC要操作图片的来源,可分为以下两类:

  一、非动态显示图片(即图片先通过资源管理器载入,有一个固定ID)

  二、动态载入图片(即只需要在程序中指定图片的路径即可载入)


一、非动态显示图片

  1.传送位图函数

    CDC memDC;
memDC.CreateCompatibleDC(pDC); CBitmap NewBitmap, * pOldBitmap;
NewBitmap.LoadBitmap(IDB_BITMAP1);//从资源中导入位图
BITMAP bmpInfo;//声明BITMAP结构体
NewBitmap.GetBitmap(&bmpInfo);//获取位图信息
pOldBitmap = memDC.SelectObject(&NewBitmap);//将位图选入内存DC pDC->BitBlt(0, 0, 0, 0, &memDC, 0, 0, SRCCOPY);//将内存DC中的位图复制到设备DC

  2.创建位图画刷

   CBitmap NewBitmap;
   NewBitmap.LoadBitmap(IDB_BITMAP1);
   CBrush NewBrush, *pOldBrush;
   NewBrush.CreatePatternBrush(&NewBitmap);
   pOldBrush = pDC->SelectObject(&NewBrush);
   pDC->FillRect(CRect(0,0, nScrHalfWidth * 2, nScrHalfHeight * 2), &NewBrush);
   pDC->SelectObject(pOldBrush);

二、动态载入图片

  1.CImage

    CImage 支持的图片格式有很多,像通常用的jpg,png,bmp,gif等。

   HDC hDC;
   hDC = pDC->GetSafeHdc();
   CImage img;
   img.Load(L"res/texture.bmp");
   img.Draw(hDC, 0, 0, 100, 100);

  


补充:

  GDI(图形设备接口(Graphics Device Interface)) 主要任务是负责系统与绘图程序之间的信息交换。在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI。GDI的出现使程序员无需要关心硬件设备及设备正常驱动,就可以将应用程序的输出转化为硬件设备上的输出和构成,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。

  GDI绘图工具的基类,一般不能直接使用。其中CBitmap、CBrush、CFont、CPalette、CPen、CRgn等。

  在使用GDI对象进行绘图时,需要遵循一下步骤:

   (1)绘图开始前,创建一个新的GDI对象,并选入当前设备上下文,同时保存原GDI对象指针。

   (2)使用新GDI对象绘图。

   (3)绘图结束后,使用已保存的原GDI对象指针将设备上下文回复原状。

  希望本文章能够帮助到您。如果文章中有错误或不足之处,希望您可以在评论区纠正,方便大家交流学习。

[1]孔令德. 计算机图形学基础教程.清华大学出版社,2008.

MFC图片操作的更多相关文章

  1. ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave由于鼠标移动速度过快导致问题解决办法

    记录两个项目开发中遇到的问题,一个是ECharts外部调用保存为图片操作,一个是workflow工作流连接曲线onmouseenter和onmouseleave事件由于鼠标移动过快触发问题. 一.外部 ...

  2. 【php学习】图片操作

    前两天要对一张图片进行处理,其实很简单,就是在图片上加上字符串,一个图片而已,但是自己如同得了短暂性失忆似的,图片操作的函数一个都想不起来.所以就抽空整理了一下图片操作函数. 图片处理三步走: 创建画 ...

  3. Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas

    Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas   1,Bitmap对象的获取 首先说一下Bitmap,Bitmap是Androi ...

  4. bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...

  5. .NET Core 图片操作在 Linux/Docker 下的坑

    一.前言 .NET Core 目前更新到2.2了,但是直到现在在 .NET Core 本身依然不包括和图片有关的 Image.Bitmap 等类型.对于图片的操作在我们开发中很常见,比如:生成验证码. ...

  6. media静态文件统一管理 操作内存的流 - StringIO | BytesIO PIL:python图片操作库 前端解析二进制流图片(了解) Admin自动化数据管理界面

    一.media ''' 1. 将用户上传的所有静态文件统一管理 -- settings.py -- MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2. 服务 ...

  7. 盒子总结,文本属性操作,reset操作,高级选择器,高级选择器优先级,边界圆角(了解),a标签的四大伪类,背景图片操作,背景图片之精灵图

    盒子总结 ''' block: 设置宽高 1.没有设置宽,宽自适应父级的宽(子级的border+padding+width=父级的width) 2.没有设置高,高由内容撑开 设置了宽高 一定采用设置的 ...

  8. JavaScript之图片操作7

    前面总结了很多了有关于图片操作的案例,本次是基于前面的基础,做一个综合的图片轮播效果,需要实现以下功能: 没有任何操作时,图片自动轮播 鼠标悬浮时,图片停止轮播:当鼠标移开,轮播继续 鼠标悬浮时,出现 ...

  9. JavaScript之图片操作5

    本次的图片操作是要实现模仿天猫淘宝的放大镜效果,如下图所示: 其实现原理其实很简单,主要就是定位的运用,在上面的图中,左边是一个div,它的大小就是左边图片的大小,我们称为左窗口(原图),红色部分我们 ...

随机推荐

  1. Jboss项目部署出现java.lang.UnsupportedClassVersionError 问题的解决方法

    出现java.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误. 解决 ...

  2. Servlet第五篇(会话技术之Session)

    Session 什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服务器中.用户使用浏览器访问服务器的时候,服务器把用户的信息 ...

  3. 利用百度编辑器和IIS限制文件上传的大小

    1.百度编辑器的大小限制 针对不同的文件类型限制大小 例如图片是imageMaxSize ,依次类推 /* 前后端通信相关的配置,注释只允许使用多行方式 */ {     /* 上传图片配置项 */ ...

  4. CentOS 7 安装MongoDB

    一.安装 1.进入网址 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 按照官方指南进行安装 2.创建文件 / ...

  5. 创建一个 mac 的后台进程(daemon)

    Mac中创建守护进程(Daemon) 创建一个可以执行的脚本 hello.sh touch /Users/oslivan/test/hello.sh chmod 755 /Users/oslivan/ ...

  6. excel上传下载

    protected void Button1_Click(object sender, EventArgs e) { if (ViewState["unitname"] != nu ...

  7. 前端面试之vue相关的面试题

    hello,你们的小可爱,皮皮聪又来发表感想了. 首先简单概括下会遇到的问题: 1.vuex作用 ①vuex是一个状态管理的插件,可以解决不同组件之间的数据共享和数据持久化. ②vue中的多个组件之间 ...

  8. IIS配置支持跨域请求

    对于初次在IIS部署网站的同学,很容易忽略或不知道如何配置使其网站支持跨域请求,这里介绍一个最基础的方式,配置HTTP响应标头. 在IIS上选择HTTP响应标头,选择添加自定义响应标头,通常我们会添加 ...

  9. 解决js数组循环删除出错

    for(var i=0,flag=true,len=arr.length;i<len;flag ? i++ : i){ if( arr[i]&&arr[i].status==0 ...

  10. 分布式服务治理框架dubbo

    Dubbo最主要功能有两个 1 RPC调用 2 SOA服务治理方案 Dubbo的架构 Dubbo常见的注册中心有2中,zookeeper以及redis 这篇文章讲解的是采用的zookeeper,要求读 ...