当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第2章 Windows的图形设备接口及Windows绘图 > 02-4 例题和作业 > 02-4-4 例题4
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
下面我们再通过一个例子
给大家介绍一下映像模式的使用
这个例子是这样的
初始阶段我们按模式TEXT绘图
图形为一个坐标系
以逻辑坐标系的原点为原点
X、Y轴分别是逻辑坐标系的X、Y轴
当用户按下A键、B键或C键时
产生WM_CHAR字符消息
将映像模式分别设置为
跟这个LOMETRIC
同时进行刷新用户区
那首先我们先运行一下应用程序
好!这个程序编译通过
我们先运行一下
然后再介绍代码的具体内容
这个程序是这样的
刚开始运行的时候是这么个界面
有一个坐标系
X轴 Y轴
然后我按下A键的时候
它是一个映射模式是这样的
按B键的时候
X轴跟Y轴比例是变化的
按C键的时候
这个时候大家看到X轴跟Y轴
这个Y现在是向上的了
这个方向就发生了变化
那么就是这么个效果
其实这个例子非常简单
但为什么要讲这么个例子
也就是说将来大家可能在进行科学计算过程中
或者说科学研究过程中
经常会碰到坐标的变化问题
那实际上这个问题
我们根据我们例题的题意要求
初始阶段按TEXT模式绘图
所以,应用程序我们初值定义了TEXT
这是一个全局的变量
这是一个模式
是全局的变量
这是映射模式
然后我们关键要处理什么呢?
WinMain内容大家看起来是一样的
我们就不细说了
给大家显示一下就可以了
大家可以去下载我们的代码
关键我们讲一下WndProc
同样定义了hdc
PAINTSTRUCT的ps
定义了一个画笔PEN
然后由于我们响应的是字符消息
所以字参数如果是字符A
大家看到小a和大A
也就是说因为在C语言里面
小a和大A由于它ASC码值不一样
所以小a字符跟大A字符是不同的值
如果我们只响应大A
那么有用户按下小a的情况下
那么就不能根据按下A/a这个字符来进行操作
因为A/a字符包含大A跟小a
所以我们字参数,如果等于小a或者等于大A的情况下
我们定义了一个模式
如果是小b或者大B
又定义了另外一个模式
如果小c或者大C
又定义了另外一个模式
实际上这里响应的字符的信息
就是这么简单
就是通过字参数的
我们通过字参数判断是哪一个字符
然后确定它的映射模式
由于确定了映射模式之后
那么刷新用户区的时候
我们是根据新的模式进行刷新
由于定义了映射模式之后
我们要开始响应PAINT消息
PAINT消息同样
是创建DC
将这个模式选入DC
然后设置窗口和视口
然后创建红色的笔
因为大家看到我们画的一个坐标是红色的坐标
然后我们这里画线
画线这里画的
这个是原点
然后画线画到这个地方
然后在这个地方大家可能不清楚
这是为什么
实际上我们坐标里面
我给大家看一下
大家就明白了
这个坐标里面是有箭头的
那么这个箭头是怎么画出来的
箭头也是一根线
所以这里是一根线
两根线
三根线
所以画一个箭头
一个坐标轴还有一个箭头
实际上这里是六根线
这里是六根线
不同的映射模式下都是六根线
所以的话
大家看到这里就画了六根线
这个画线的话,只是把道理给大家说清楚
至于怎么画线
怎么坐标从什么地方开始
我想大家自己去算一下就知道了
然后这个题目实际上只是给大家介绍一下
通过字符消息来驱动刷新的问题
同时在刷新过程中
考虑不同的映射模式的问题
好了 这个例子也是非常简单
我们就介绍到这儿
-讨论实录
--0-0
-1-1 Windows应用程序的特点
--1-1
-1-2 可视化编程
--1-2
-1-3 关于API
--1-3-1
--1-3-2
-1-4 Windows应用程序组成及编程步骤
--1-4-1
--1-4-2
-1-5 应用程序举例
--1-5-1
--1-5-2
--1-5-3
-02-1 Windows图形设备接口
-02-2 绘图工具与颜色
-02-3 常用绘图函数
-02-4 例题和作业
-第2章源代码
--外部链接
--外部链接
-3-1 设置文本的设备环境
-3-2 文本的输出过程
-3-3 例题和作业
-第3章源代码
--外部链接
-4-1 Windows 应用程序中的键盘与鼠标
--4-1
-4-2 键盘的操作应用举例
--4-2
-4-3 例题
--4-3
-4-3 鼠标在应用程序中的应用
--4-3
-4-4 例题4-4
--4-4
-第4章源代码
--外部链接
-5-1 菜单和加速键资源及其应用
--5-1
-5-1(例1)
--5-1(例1)
-5-2 位图资源及其应用
--5-2
-5-3 对话框资源及其应用
--5-3-1
--5-3-2
-5-4 图标资源的应用
--5-4
-第5章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业