鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc
c语言高级编程技术教程 图形显示方式与鼠标输入
c语言高级编程技术教程 图形显示方式和鼠标输入
图形显示方式和鼠标输入
问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光
标将随鼠标而移动,根据按键的不同采用不同的形状来画出相应的移动轨迹:当仅按下左键
时,用圆圈;仅按下右键时,用矩形;其它按键情况用线条。
分析在这个问题中我们看到输入的操作已不再是通过键盘,而是用鼠标。而且我们还要
响应鼠标的具体操作,在屏幕上画出点、矩形、圆等图形。
解答要解决这一编程问题,将涉及两方面的内容:一是关于程序设计中较难且又最吸引
人的部分--计算机图形程序设计,即图形方式(另外一种显示器显示方式)的知识;二是
关于鼠标的知识。下面将对它们做具体的解释。
2.1图形显示
图形方式和文本方式不同,我们可以在这种方式下画图,它的显示单位是象素。如同近
看电视的画面一样,显示器显示的图形也是由一些圆点组成(其亮度、颜色不同),这些点称
为象素(或称象点)。满屏显示象素多少,则决定了显示的分辨率高低,可以看出象素越小(或
个数越多),则显示的分辨率越高。象素在屏幕上的位置则可由其所在的x,y坐标来决定。
显示屏的图形坐标系统就象一个倒置的直角坐标系(如图3-6所示):定义屏幕的左上角为
原点,正x轴右延伸,正y轴向下延伸,即x和y坐标值均为非负整数,但其最大值则由显
示器的类型和显示方式来确定,也就是说,显示的象素大小可以通过设置不同的显示方式来
改变。例如在图3-6(a)所示的显示方式下,x,y最大坐标是(639,399),即满屏显示的象素
个数为640×400。3-6(b)示出了不同位置象素的坐标,其最大的x,y值(即行和列值)由程序
设置的显示方式来决定。我们称这种显示坐标为屏幕显示的物理坐标或绝对坐标,以便和图
视窗口(图视口)坐标相区别。图视窗口是指在物理坐标区间又开辟一个或多个区间,在这些
区间又可定义一个相对坐标系统,以后画图均可在此区间进行,以相对坐标来定义位置。如
在图3-6(a)所示的显示方式下,当定义了一个左上角坐标为(200,50),右下角坐标为(400,
150)的一个区域为图视口,则以后处理图形时,就以其左上角为坐标原点(0,0),右下角为
坐标(200,100)的坐标系来定位图形上各点位置。
Turbo C为用户提供了一个功能很强的画图软件库,它又称为Borland图形接口(BGI),
它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动
程序(如CGA.BGI、EGAVGA.BGI等)。还有一些字符集的字体驱动程序(如goth.chr黑体字
符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib中,执行这些函数时,所
需的有关信息(如宏定义等)则包含在graphics.h头文件中。因此用户在自己的画图源程序中
必须包括graphics.h头文件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程
序中去。
由于计算机画图涉及到显示器和驱动它们工作的图形适配器(卡)等许多硬件知识,因而
有必要简单地介绍一下。
2.1.1图形显示器与适配器
计算机中要显示的字符和图形均以数字形式存储在存储器中,而显示器接收的应是模拟
信号。插在PC微机插槽中的图形卡(即适配器或显卡),其作用就是将要显示的字符和图形
以数字形式存储在卡上的视频存储器VRAM中,再将其变成视频模拟信号送往相应适配的
显示器进行显示,也即适配器在计算机主机和显示器之间起到了信息转换和视频发送作用,
一般PC机中适配器、主机、显示器之间的关系如图3-7所示。
由于计算机配有的显示器种类不同,因而适配器种类不同,而且不同适配器又可支持不
同的分辨率显示方式、文本显示方式和颜色设置。表3-4提供了Turbo C支持的各种显示器
表3-4 Turbo C支持的适配器和图形模式
适配器Driver模式Mode分辨率
颜色数
标识符
CGA EGA EGA64 EGAMONO VGA MCGA HREC ATT400 PC3270 IBM8514 0
1 2
3 4
0 1
0 1
0 0
1 2
0 1
2 3
4 5
0 0
1 2
3 4
5 0
0 1
320×200 320×200 320×200 320×200 640×200 640×200 640×350 640×200 640×350 640×350 640×200 640×350 640×480 320×200 320×200 320×200 320×200 640×200 640×480 720×348 320×200 320×200 320×200 320×200 640×200 640×400 720×350 640×480
鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc相关推荐
- C语言嵌入式Linux高级编程
C语言本质上是编程语言的"通用语言",在今天仍具有极大的影响力.那么,C语言到底学到什么程度,才能够进行嵌入式内核.驱动的开发? 本课程为系列课程中的一个小节,入门介绍篇,介绍嵌入 ...
- [SYSU][大二下] 高级编程技术HW Week-2 Lecture-2
Question 教材中课后的练习,4-1到4-15,选一些写到你的博客上 Answer ''' SYSU - [专选]高级编程技术 - Week2, Lecture2 HW by Duan 2018 ...
- java高级教程pdf_Java高级编程实用教程中文 PDF版_IT教程网
资源名称:Java高级编程实用教程中文 PDF版 内容简介 本书是一本介绍Java高级编程的实用教程,面向具有一定Java编程基础的开发人员.本书通过对"项目"的分析.实现和讲解, ...
- ole2高级编程技术 pdf_21天快速掌握Python语言,《21天学通Python》PDF版送给你去学...
Python的学习书籍小编看过很多,但是这本<21天学通Python>真的是堪称极品! 本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版 ...
- matlab高级教程教材,MATLAB语言高级编程 PDF_IT教程网
资源名称:MATLAB语言高级编程 PDF 本书共分8章,主要介绍了matlab的概述.matlab安装与工作桌面:matlab的编程基础,包括matlab的变量.matlab的运算符.矩阵的创建及运 ...
- python基于c语言开发_C高级编程:基于模块化设计思想的C语言开发 PDF 超清版
给大家带来的一篇关于C语言相关的电子书资源,介绍了关于C高级编程.模块化.设计思想.C语言开发方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小80 MB,吉星编写,目前豆瓣.亚马逊.当当 ...
- ole2高级编程技术 pdf_别不信,21天就可以学会python,《21天学通Python》pdf免费领取...
python的学习书籍小编看过很多,但是这本<21天学通python>真的是堪称极品!本书的作者团队成员为一线开发工程师.资深编程专家或专业培训师,在编程开发方面有着丰富的经验,并已出版过 ...
- micropython编译原理_C语言嵌入式Linux高级编程第9期:CPU和操作系统入门视频课程...
嵌入式开发是一门交叉学科. 它要求我们的嵌入式工程师,不仅学习C语言.汇编.软件工程等软件层面的知识技能,还要求对CPU内部工作机制.计算机系统架构.操作系统原理.编译器等都有一个全局的认识和把握. ...
- 【渝粤题库】广东开放大学 Java高级编程技术 形成性考核
题目: Java语言中可以作为标识符的有(). 题目: Java中的流程控制语句包括(). 题目:计算机语言的发展经历了非常大的变革,其发展具体包括(). 题目:java源程序经过编译器编辑后,形成 ...
最新文章
- python将数据存入数据库_python3 两种方法将数据存入mysql数据库
- 数据结构与算法 / 总章
- 总结一些写毕业论文背景研究可以参考的资源
- java sql 排序_JAVA像SQL一样对List对象集合进行排序
- git学习3--关联不同的网址的远程分支
- oracle apex 日志,oracle-apex - 在oracle apex报告中显示员工记录或经理记录及其员工 - SO中文参考 - www.soinside.com...
- vnpy2.0安装后报错ModuleNotFoundError: No module named 'vnpy.api.ctp.vnctpmd'
- ajax 实时进度_三分钟搭建websocket实时在线聊天,项目经理也不敢这么写
- 关于哈希,分布式哈希表,一致性哈希
- 同步现象 心理学_「心理学学了些什么?」基础心理学知识1
- 深度学习笔记(五):LSTM
- 阿里云弹性计算研发团队如何从0到1自建SRE体系
- 布朗运动、伊藤引理、BS公式
- python--基本操作
- iPhone/苹果手机不用数据线传输文件到电脑的方法/步骤
- cortex系列处理器排行_arm处理器排行_ARM Cortex A系列处理器性能分类比较ARM处理器排名 ZNDS资讯...
- 实验一:MongoDB的基本操作
- TMS320C6748的StarterSware软件包
- nuxt 引入第三方字体、艺术字效果
- 二维码支付的优势与劣势
热门文章
- 皮一皮:一顿操作猛如虎...
- 每日一皮:我当程序员的时候也是...
- 深度剖析RabbitMQ可靠性消息投递以及实践方案
- 微服务注册中心如何承载大型系统的千万级访问?
- 点云配准网络 PCRNet: Point Cloud Registration Network using PointNet Encoding 2019
- Please use new-style autograd function with static forward method
- Anaconda 默认环境
- 3D目标检测2021
- DataParallel 笔记
- 安卓摄像头 data 转bitmap