MFC图片操作
根据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图片操作的更多相关文章
- ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave由于鼠标移动速度过快导致问题解决办法
记录两个项目开发中遇到的问题,一个是ECharts外部调用保存为图片操作,一个是workflow工作流连接曲线onmouseenter和onmouseleave事件由于鼠标移动过快触发问题. 一.外部 ...
- 【php学习】图片操作
前两天要对一张图片进行处理,其实很简单,就是在图片上加上字符串,一个图片而已,但是自己如同得了短暂性失忆似的,图片操作的函数一个都想不起来.所以就抽空整理了一下图片操作函数. 图片处理三步走: 创建画 ...
- Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas
Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas 1,Bitmap对象的获取 首先说一下Bitmap,Bitmap是Androi ...
- bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...
- .NET Core 图片操作在 Linux/Docker 下的坑
一.前言 .NET Core 目前更新到2.2了,但是直到现在在 .NET Core 本身依然不包括和图片有关的 Image.Bitmap 等类型.对于图片的操作在我们开发中很常见,比如:生成验证码. ...
- media静态文件统一管理 操作内存的流 - StringIO | BytesIO PIL:python图片操作库 前端解析二进制流图片(了解) Admin自动化数据管理界面
一.media ''' 1. 将用户上传的所有静态文件统一管理 -- settings.py -- MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2. 服务 ...
- 盒子总结,文本属性操作,reset操作,高级选择器,高级选择器优先级,边界圆角(了解),a标签的四大伪类,背景图片操作,背景图片之精灵图
盒子总结 ''' block: 设置宽高 1.没有设置宽,宽自适应父级的宽(子级的border+padding+width=父级的width) 2.没有设置高,高由内容撑开 设置了宽高 一定采用设置的 ...
- JavaScript之图片操作7
前面总结了很多了有关于图片操作的案例,本次是基于前面的基础,做一个综合的图片轮播效果,需要实现以下功能: 没有任何操作时,图片自动轮播 鼠标悬浮时,图片停止轮播:当鼠标移开,轮播继续 鼠标悬浮时,出现 ...
- JavaScript之图片操作5
本次的图片操作是要实现模仿天猫淘宝的放大镜效果,如下图所示: 其实现原理其实很简单,主要就是定位的运用,在上面的图中,左边是一个div,它的大小就是左边图片的大小,我们称为左窗口(原图),红色部分我们 ...
随机推荐
- Spring:AOP
摘要 本文内容为我在网上搜集Spring AOP资料的汇总.摘抄. AOP是一种编程思想,其对不同对象进行了横向的抽象,将不同对象的.和主流程无关的公共逻辑抽象出来以方便维护.AOP的实现基础为AOP ...
- 15. 3Sum (JAVA)
Given an array nums of n integers, are there elements a, b, cin nums such that a + b + c = 0? Find a ...
- 微信小程序记账本进度七
最后大体上完成了,但是好像少了点功能,整体并不是特别华丽
- python入门day01
一.编程和编程语言 电脑的基本原理: #计算机通过高低电流表示二进制数的1和0,所以计算机识别的是电压的高低,准确地说是用电压表示的各种数据,即数字信号;其他的物理量必须通过传感器等设备转换成数字 ...
- Cannot attach medium 'D:\program\VirtualBox\VBoxGuestAdditions.iso' {}: medium is already associated with the current state of machine uuid {}返回 代码: VBOX_E_OBJECT_IN_USE (0x80BB000C)
详细的错误信息如下: Cannot attach medium 'D:\program\VirtualBox\VBoxGuestAdditions.iso' {83b35b10-8fa2-4b81-8 ...
- Jenkins+Gradle+Docker打docker镜像包上传至s3
gradle打包跟maven打包的环境搭建有相似之处,可参考maven打包https://www.cnblogs.com/chenchen-tester/p/6408815.html 进入Jenkin ...
- express基础项目创建
https://www.cnblogs.com/zhentaoo/p/6392248.html
- SVD的基础详解
目录
- java redispool测试类保存
这两天睡眠不足,今晚吃完饭,肚子烦躁的很,迟迟进入不了代码的状态,强打精神,又赶上处理了几个编辑器的报错,等到真正面对问题的时候又是晚上十一点, 晚上十一点是幸运点,到这个点无关问题都能解决完毕进入调 ...
- centos7 删除swap
https://www.refmanual.com/2016/01/08/completely-remove-swap-on-ce7/#.W8AaSRMzaRs 删除不干净,启动不起来的情况下.需要从 ...