当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 > 第8章 在MFC中创建应用程序的资源 > 8-7 位图资源的创建及其使用 > 8-7
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表
下面再给大家介绍一个资源
就是位图资源的创建及其使用
大家知道标准控件比较单调
如果能够通过一些精美的图片来点缀那就活泼了
这个问题可以选择位图资源来实现
位图是一种数字化的图形表示形式
基本数据结构是像素
一个像素表示一个离散点的像素值
常见的位图256色、16位的、24位的等等
其中VC6的资源编辑器支持256色以下,包括256色
这是早前版本的
而最新的VC版本已经能够支持24位真彩位图的编辑了
保存在文件的中的位图可以看作是设备无关的
文件本身的数据是用来描述位图的内容
下面我们再通过一个例子
在原来的基础上显示两幅图片
一幅是256色的,另一幅是24位真彩的
两幅图片都通过资源来显示
从运行的效果大家可以看到
右边这幅图清晰度比左边这幅要清晰得多
这是一幅坦克
从坦克的外形、颜色、颗粒度
都可以看出来
右边的像素一定是比左边高的
那么我们看怎么做这个问题
首先我们在位图资源里面添加资源
添加什么资源呢 位图资源
那么由于两张图已经都具备了
所以就直接导入
先导入一个256色的图 打开
这时候大家看到这里有一个BITMAP
叫BITMAP1
这个时候把BITMAP定义为IDB_BITMAP_256
因为这是256色的
所以在属性里面把ID改成IDB_BITMAP_256
然后再加入一个位图 24位的位图
这里出现了BMP2
ID给它设成IDB_BITMAP_24bit
然后ID也改一下
这样就加载了位图资源
在位图资源的基础上增加了两张位图
或者说加载了两张位图
大家知道原来的资源文件里面
缺省的里面并没有位图资源
由于程序一运行,位图就显示出来了
或者说画出来了
所以我们在OnDraw函数里面添加相应的代码
我们仍然在这里写一个注释
显示 Show Bitmap
我们为了显示位图增加了如下代码
大家看这里创建的内存的DC
所以是CDC类的对象dcMemory
创建内存的缓冲DC
然后在内存缓冲里面创建了一个pDC
这个pDC大家看
就是OnDraw里面CDC类的一个对象指针
好了,这时候用来指向位图
我们定义了一个Cbitmap的一个对象bmp1
通过bmp1的对象加载 它的成员LoadBitmap
加载哪一个呢 加载第一幅图
我们定义了一个BITMAP位图的info
这样的话,我们bmp1获取位图
然后把获取位图的尺寸的信息放到bmpInfo1里面
这个位图数据结构中
然后我们从dc内存里面通过SelectObject
我们把bmp1位图的对象选到位图内存缓冲区中
然后通过BitBlt
在200 10这个坐标 左上角
就是在位图显示的那个左上角的位置
按它的宽度和高度
因为我们已经在这里面获取了位图的宽度和高度
同时填写了BITMAP的数据结构
所以就获取了位图的宽度和高度
然后从dc内存里面将位图拷贝到屏幕上
这是我们显示256色的位图
同理,我们用同样方法通过加载第二个位图
就是24位的位图
在400 10的地方
将位图拷贝到屏幕上
在dc里面恢复了设备中原来的位图
实际上可以不恢复也没什么问题
这样我们执行以下这个应用程序
好了大家看
两个图就显示出来了
那么关于位图资源的问题就介绍到这里
-讨论实录
--0-0
-6-1 MFC概述
-6-2 C++的基本知识
--6-2-1 类
--6-2-2 对象
--6-2-6 重载
--6-2-9 指针
-6-3 MFC类的组织结构及主要的类的简介
--6-3-2 根类
-6-4 MFC中全局函数和全局变量
-7-1 概述
--7-1-1
--7-1-2
-7-2 按钮控件及其应用
--128B12447816EEF99C33DC5901307461
-7-3 按钮控件及其应用
--7-3
-7-4 静态控件
--7-4
-7-5 列表框控件
--7-5-1
--7-5-2
-7-6 编辑框控件
--7-6
-7-7 组合框控件
--7-7
-7-8 对话框通用控件
--7-8-1
--7-8-2
-讲义源代码
--html
-8-1&2 资源的应用以及菜单资源的使用
--8-1-1
--8-1-2
-8-3 快捷菜单的创建及其应用
--8-3
-8-4 加速键资源的创建及其使用
--8-4
-8-5 工具条资源的创建及其使用
--8-5
-8-6 字符串资源的使用
--8-6
-8-7 位图资源的创建及其使用
--8-7
-课堂示例源代码
--html
-第一次作业内容及要求
--html
--第一次作业及答题链接--作业
-9-1 概述
--9-1
-9-2 Doc/View框架的主要成员
--Video
-9-3 文档操作中的一些重要概念
--Video
-9-4 SDI编程实例
--Video
-9-5 MDI编程实例
--9-5-1
--9-5-2
-课堂示例源代码
--html
-第二次作业内容及要求
--html
--第二次作业及答题链接--作业
-10-1 利用音频函数实现多媒体程序设计
--10-1-1
--10-1-2
--10-1-3
--10-1-4
-10-2 利用Windows Media Player控件实现多媒体程序设计
--10-2
-课堂示例源代码
--html
-例11-1
--例1
-例11-2
--例11-2
-例11-3
--例11-3
-例11-4
--例11-4
-11-1 ODBC介绍与引用
--11-1
-课堂示例源代码
--html
-第三次作业及答题链接