第八章VisualC图形程序设计

合集下载

微软教材 visual C# 2005 程序设计语言 第八章

微软教材 visual C# 2005 程序设计语言 第八章

声明和创建数组
8.2 声明和创建数组
声明数组变量:
int [] pins;
创建数组实例:
int[] pins = new int[4];
第8章 数组与字符串
数组的概念 声明和创建数组 初始化数组变量 访问单个数组元素 随堂练习 遍历数组元素 数组复制 如何把数组作为方法参数 随堂练习 System.Array类 常用字符串处理函数 小结 实验 习题
[2][3] [3][3] …… [M-1][3]
……
…… …… ……
[2][0]
[3][0]
[3][N-1]
…… [M-1][N-1]
……
[M-1][0]
……
Array的方法
System.Array类包含的一些常用方法
方法 描述
Sort()
Clear() Clone()
对数组元素进行排序
将一定范围内的元素设为 0 或 null 创建数组的副本
习题 (续)
8.14 习题
2.
判断正误,如果错误,请说明原因 。
(1) 一个数组的元素可以是多种类型的 数据。 (2) 数组的索引一般是浮点型的。 (3) 把数值型数组的一个元素作为参数 传入一个方法中,并在此方法中修 改了这个值。那么在方法返回后, 修改的值会被储存到数组中。
习题 (续)
8.14 习题
字符串常用方法
常用字符串处理函数
字符串常用方法
理解字符串
8.11.1
理解字符串
字符串本身可以被看作是一个System.Char对象 的数组。每一个Char对象在String中都有它自己 的位置,这个位置被称为“索引”。索引是从零 开始、从字符串的起始位置(其索引为零)计起 的非负整数。

Visual C 基础教程(郭文平)章 (8)

Visual C  基础教程(郭文平)章 (8)

第8章 创建应用程序框架
(6) 在“MFC AppWizard–Step 4 of 6”对话框中可以设 置应用程序的界面特征。
· Docking toolbar:缺省设置,为应用程序添加一个 标准的工具栏,且添加相应的菜单命令来显示或隐藏工具栏。
· Initial status bar:缺省设置,为应用程序添加一 个标准的状态栏,且添加相应的菜单命令来显示或隐藏状态栏。
话框,如图8-1所示。
第8章 创建应用程序框架
选择项目类型
输入项目名 选择保存路径
图8-1 New对话框的“Projects”页面
第8章 创建应用程序框架
(2) 选定“Projects”标签,在左侧项目类型列表框中选择 项目类型“MFC AppWizard[exe]”。在“Project name”文本框 中输入项目名,本例为EX8_1。在“Location”文本框中输入保 存项目的路径和文件夹名,或单击右侧的“浏览”按钮,在打开 的对话框中选择保存项目的文件夹。向导将在该文件夹下建立一 个以项目名为名称的子文件夹,用于保存此项目的所有文件。设 置完成后,单击“OK”按钮,出现“MFC AppWizard-Step 1”对 话框,如图8-2所示。
· None:默认选项,应用程序不支持任何复合文档。 · Container:应用程序作为复合文档容器,可以嵌入 或链接复合文档对象。 · Mini-server:应用程序可以创建被其它应用程序嵌 入的对象。应用程序不能作为一个独立的程序运行,只能被其 它支持嵌入对象的程序启动。 · Full-server:应用程序可以创建被其它应用程序嵌 入或链接的对象,并能作为一个独立的程序运行。 · Both container and server:应用程序既可以作为 复合文档容器,又可以作为一个可单独运行的复合文档服务器。

Visual Basic程序设计教程电子课件——图形控件和图形方

Visual Basic程序设计教程电子课件——图形控件和图形方
Print X, Y End Sub Image控件可接受Click等事件,因此可以充当图形命令 按钮。
10
6.1.3 形状控件
工具箱中形状控件的图标为。 形状控件缺省的控件名称为:Shape1、 Shape2、……,微软建议名称前缀为shp。 1.形状控件常用属性 (1) Shape属性。 形状控件用于创建指定的图形,通过设置Shape属性 来得到所需要的形状,画出正方形、矩形、圆和椭圆等。
4
6.1.1 图片框控件
在图片框中加载图像有下列两种方式: 设计时选取:界面设计时,在该图片框控件属性窗口中 点击“Picture”属性,随之弹出“加载图片”对话框, 选择所要显示的图片文件后,相应的图片被加载到图片 框中。 运行时装入:程序运行时,可用LoadPicture函数装 入图片到图片框控件中。格式:图片框控件名.Picture = LoadPicture (filename)
6
6.1.1 图片框控件
2.图片框控件的常用方法 (1) Print方法。 图片框控件可以用来显示Print方法输出的文本,格式如下: 图片框控件名称.Print 输出表 如执行“Picture1.Print "图片框"”,则在图片框 Picture1上当前输出位置,显示“图片框”这3个字。 (2) Cls方法。 图片框上除了所装入的图片外,其他的所有文字、图形都 可以用Cls方法擦除,格式如下:
11
6.1.3 ቤተ መጻሕፍቲ ባይዱ状控件
Shape属性定义该控件显示的图形。取整数值或系统定 义的符号常量,取值及含义如下: ◆ 0或VbShapeRectangle:控件形状为矩形 。 ◆ 1或VbShapeSquare:控件形状为正方形。 ◆ 2或VbShapeOval:控件形状为椭圆形。 ◆ 3或VbShapeCircle:控件形状为圆形。 ◆ 4或VbShapeRoundedRectangle:控件形状为圆 角矩形。 ◆ 5或VbShapeRoundedSquare:控件形状为圆角正 方形。

《Visual C++ 第二版》第8章图形和文本

《Visual C++ 第二版》第8章图形和文本

8.1设备环境和简单数据类




CRect类的常用操作 传递LPRECT、LPCRECT或RECT结构作为参数的任何地方,都可以用CRect对象来代替。 构造一个CRect时,要使它符合规范。即使其left小于right,top小于bottom。一个 不 符 合 规 范 的 矩 形 , CRect 的 许 多 成 员 函 数 都 不 会 有 正 确 的 结 果 。 常 常 用 CRect::NormalizeRect函数使一个不符合规范的矩形合乎规范。 成员函数InflateRect和DeflateRect用来扩大和缩小一个矩形。由于它们的操作是相 互的,也就是说,若指定InflateRect函数的参数为负值,那么操作的结果是缩小矩形, 因此下面只给出InflateRect函数的原型: void InflateRect( int x, int y ); void InflateRect( SIZE size ); void InflateRect( LPCRECT lpRect ); void InflateRect( int l, int t, int r, int b ); x指定扩大CRect左、右边的数值。y指定扩大CRect上、下边的数值。size中的cx成员 指定扩大左、右边的数值,cy指定扩大上、下边的数值。lpRect的各个成员指定扩大 每一边的数值。l、t、r和b指定扩大CRect左、上、右和下边的数值。 对于前两个重载函数来说,CRect的总宽度被增加了两倍的x或cx,总高度被增加了两 倍的y或cy。 成员函数IntersectRect和UnionRect用来将两个矩形进行相交和合并。原型如下: BOOL IntersectRect( LPCRECT lpRect1, LPCRECT lpRect2 ); BOOL UnionRect( LPCRECT lpRect1, LPCRECT lpRe

图形程序设计

图形程序设计

图形程序设计图形程序设计是指使用计算机编程技术来创建、编辑和显示图形图像的过程。

它广泛应用于游戏开发、动画制作、图形用户界面(GUI)设计、数据可视化等领域。

图形程序设计通常涉及到图形学、计算机视觉、图像处理等多个领域,需要对图形的生成、变换、渲染等有深入的理解。

基本概念在图形程序设计中,有几个核心概念需要理解:1. 像素(Pixel):图像的基本单元,每个像素具有特定的颜色值。

2. 矢量图形(Vector Graphics):由数学公式定义的图形,可以无限放大而不失真。

3. 位图(Bitmap):由像素阵列组成的图像,放大会失真。

4. 图形变换(Transformation):包括平移、旋转、缩放等操作,用于改变图形的位置和形状。

5. 渲染(Rendering):将图形数据转换成可视化图像的过程。

图形编程语言和工具图形程序设计可以使用多种编程语言,如C++、Java、Python等,同时也有一些专门的图形库和工具,例如:- OpenGL:一个跨平台的图形API,广泛用于三维图形渲染。

- DirectX:由微软开发的图形和多媒体编程接口,主要用于Windows平台。

- Unity:一个跨平台的游戏开发引擎,支持二维和三维图形。

- Processing:一个基于Java的编程语言和集成开发环境,专为电子艺术和视觉设计而设计。

图形设计流程图形程序设计通常遵循以下步骤:1. 需求分析:确定项目的目标和需求。

2. 设计:创建图形设计的概念和草图。

3. 实现:使用编程语言和图形库实现设计。

4. 测试:检查图形程序的功能和性能。

5. 优化:根据测试结果进行优化,提高效率和质量。

6. 发布:将图形程序发布到目标平台。

图形编程技术在图形程序设计中,有几种关键技术:1. 图形绘制:使用基本图形元素(如点、线、圆等)绘制图像。

2. 颜色和纹理:应用颜色和纹理来增加图像的视觉效果。

3. 光照和阴影:模拟现实世界的光照效果,增加图像的真实感。

Visual Basic程序设计实用教程vb08(第8章 使用常用绘图方法)

Visual Basic程序设计实用教程vb08(第8章 使用常用绘图方法)
(2) 用户可以单击某个 图形按钮绘制出相 应图形和秒表的运 行图形。
8.3 绘图相关知识(1)
1、容器控件 要实现绘图就必须具备基本 条件,那就是要有一个绘 图的板。这与我们日常的 概念是一样的。比如一张 纸可以绘图,而一盆水就 不可绘图。VB提供了两 种可以绘图的板,
窗体-Form
图片坐标,或椭圆中心、圆弧中心的坐标; Radius:圆的半径; Start:选用时为画圆弧,表示圆弧的起始位置,用弧度表示; End:选用时为画圆弧,表示圆弧的终止位置,用弧度表示; Aspect:选用时为画椭圆,是椭圆X轴和Y轴的比例,当大于1时,长 半轴为Y轴,当小于1大于0时,长半轴为X轴;
8.7 实现鼠标绘任意图形(2)
应用鼠标事件完成任意绘图的操作,鼠标事件对 应的操作如下:
MouseDow n (鼠标压下) MouseMove (鼠标移动)
启动绘图,取 得当前坐标
判断是否绘图, 是绘制首尾相 接的线条
MouseUp (鼠标抬起)
停止绘图
8.8 图形方法应用举例(1)
按钮“画圆”代 码
8.3绘图相关知识
控件坐标和大小: 控件的位置属性: Left 和 Top ,指定控件左 上角的坐标值; 控件尺寸大小的属性: Height和 Width ,指定控 件右下角的坐标值, 实际上是控件的高度 和宽度。
(0,0) 控件
X轴
Y轴
控件坐标图
8.4 画线的方法Line
语句格式为:
Object.Line [step](x1,y1)-(x2,y2),[Color],[B][F]
语句示例: (在Form1上画图) 画圆: Form1.Circle (1000, 1000), 400, vbRed 画椭圆: Form1.Circle (1000, 1000), 400, vbRed, , , 1.5

visual basic 程序设计课后习题参考答案

visual basic 程序设计课后习题参考答案

Visual basic 程序设计习题参考答案第一章Visual basic 程序设计一、选择题二、填空题三、简答题1、简述visual basic 的特点。

(1)具有可视化的设计平台(2)面向对象的设计方法(3)事件驱动的编程机制(4)结构化程序设计语言(5)开放的数据库功能与网络支持2、什么是对象、类、属性、事件和方法?在可视化编程语言中,对象是代码和数据的集合,它可以是窗体和控件,也可以是菜单和数据库等。

描述一个对象有三个基本要素:属性、方法和事件。

类是一组用来定义对象的相关过程和数据的集合,即同类对象的集合和抽象。

属性是描述对象的一组特性。

方法是对象能够执行的动作,它是对象本身内含的函数或过程,用于完成某种特定的功能。

事件是发生在对象上并且能够被对象识别的动作,即由系统预先设置好的、能被对象识别的动作,如Click(单击)、DblClick(双击)、Load(窗体的装载)、KeyPress(按键)、Change(改变)、MouseMove (鼠标的移动)等,每一种对象能识别的事件是不同的5、什么是事件驱动的编程机制?当某个事件(一般由用户操作来触发) 发生时,系统就会自动执行此事件的事件过程。

由事件控制整个程序的执行流程。

事件过程要经过事件的触发才能被执行,这种工作模式称为事件驱动方式。

第二章Visual basic 程序设计基础一、选择题二、填空题第三章数据输入输出一、选择题二、填空题3第四章选择结构和循环结构程序设计一、选择题二、填空题第五章数组一、选择题二、填空题第六章过程一、选择题二、填空题三、简答题1、简述事件过程和通用过程的含义和联系。

5VB应用程序是由过程组成的,过程是完成某种特殊功能的一组独立的程序代码。

VB中的过程有两大类:事件过程和通用过程事件过程是当发生某个事件时,对该事件作出响应的程序段。

事件过程由VB自行声明,用户不能增加或删除。

事件过程是VB 应用程序的主体。

Visual Basic程序设计教程电子课件——程序设计基础

Visual Basic程序设计教程电子课件——程序设计基础
6
2.1.2 如何学习Visual Basic
2.编程实验对能力提高最重要
学习Visual Basic与学习下棋有很多相似,值得类比、 借鉴。
学下棋必须先学各棋子的移动规则,但记住了“马走日、 象走田”并不意味着你就会下棋了,必须要勤于对奕并潜 心钻研。学习Visual Basic必须先了解Visual Basic语 言的基本规则,而更重要的是在实际应用中逐步提高编程 能力。
有懂不懂的问题。有此认识,才能避免进入许多初 学者都易于陷入的误区,从而使我们的学习获得事 半功倍的效果。
时常有学生为没有用心去记因此没有记住这些 规则而苦恼,经常有学生用一句“一点都不懂”来 表达此时的心情,是非常有害的,使得学习 Visual Basic迟பைடு நூலகம்才得以入门,从而耽误了宝贵 的学习时间。
4
2.1.1 计算机高级语言与语言处理系 统
再譬如,可以在一行上写上这样的两条语句“x=5: y=x*7.3”,但决不允许写成“x=5, y=x*7.3”,因为 Visual Basic的规则是一行上的多条语句之间必须用冒号 间隔。
(2) 语言处理系统开发者必须根据这套规则去设计、 制作语言处理系统,对于用户严格按照相应语言的规定编 写的程序,该系统应能够处理它并最终生成该程序的可执 行文件。
关于Visual Basic语言我们只能了解并熟记,我们只 能遵守规则而不能去创造规则,我们学习的意义在于用高 级语言编写程序去解决实际问题。
5
2.1.2 如何学习Visual Basic
1.语言规则要熟记 学习Visual Basic首先要做到熟记Visual
Basic语言的规则。 对于规则,只有记得住与记不住的问题,而没
若计算圆柱体的体积并存入变量v,声明v为Single 类型,半径和圆周率也采用Single类型,则结果v具有6位 有效数字;如果要求计算结果具有更高的精确度,可以考 虑采用Double类型声明v与相关变量。

VisualBasic程序设计图形设计

VisualBasic程序设计图形设计

矩形
1
VbShapeSquare
正方形
2
VbShapeOval
椭圆形
3
VbShapeOva
圆形
4
VbShapeRoundedRectangle
圆角矩形
5
VbShapeRoundedSquare
圆角正方形
FillStyle属性:整型,决定Shape控件所绘制的几何图形的填充样式, 其设置值与填充样式的对应关系如表1.2所示。
返回章首
1.2.1 Shape控件
【例1.2】设计如图1.4a所示的界面,在窗体上画两个框架Frame1、Frame2和 Frame3 , 每 个 框 架 中 放 置 一 组 选 项 按 钮 OptionButton1 ~ OptionButton3 、 OptionButton4 ~ OptionButton6和OptionButton7 ~ OptionButton9,另外再放置 一Shape控件Shape1,初始为长方形、红色边框、绿色填充。运行时,单击填 充颜色按钮用于改变图形的填充颜色,单击边框颜色按钮用于改变图形的边 框颜色,单击选择形状按钮用于改变图形的形状。运行效果如图1.4 b所示。
返回章首
1.1.2 自定义坐标系统
例如,执行下面的代码将定义窗体Form1的一个完整的坐标系统:返回章首 坐标原点在窗体中心,X轴向右为正方向,Y向上为正方向,如图1.2 所示。
Form1.ScaleMode=0 Form1.ScaleWidth=2 Form1.ScaleHeight= -2 ScaleLeft = -1 ScaleTop = -1
用垂直直线填充
VbUpwardDiagonal
用上斜对角线填充

图形学实验一Visual C++图形程序设计

图形学实验一Visual C++图形程序设计

实验一Visual C++图形程序设计一、实验目的Visual C++是在Microsoft C的基础上发展而来的,随着计算机软、硬件技术的快速发展,如今Visual C++已成为集编辑、编译、运行、调试于一体功能强大的集成编程环境。

本章以Visual C++ 6.0为对象,主要介绍Visual C++集成编成环境的使用、图形设备接口和常用图形程序设计、鼠标编程以及菜单设计等基础,目的是通过对Visual C++的学习,掌握Visual C++图形程序设计的方法,为计算机图形学原理部分的算法实现提供程序工具和方法。

二、实验任务1.学习Visual C++图形程序设计的方法;2.掌握Visual C++集成编成环境的使用、图形设备接口和常用图形程序设计。

三、基础知识和实验步骤3.1 Visual C++ 6.0应用程序开发方法介绍Visual C++ 6.0集成开发环境,以一个简单的实例介绍利用Visual C++应用程序工程建立方法和程序设计框架。

3.1.1 Visual C++的集成开发环境从开始菜单中启动Visual C++ 6.0,进入开发集成环境。

打开一个项目后,可以看到Visual C++ 6.0的开发环境由标题栏、工具栏、工作区窗口、源代码编辑窗口、输出窗口和状态栏组成,见图3.1所示。

标题栏用于显示应用程序名和所打开的文件名,标题栏的颜色可以表明对应窗口是否被激活。

菜单栏包括文件、编辑、显示、插入、工程、编译、工具、窗口和帮助九项主菜单,包含了从源代码的编辑、界面设计、程序调试和编译运行在内的所有功能。

工具栏列出了常用的菜单命令功能和对象方法。

工具栏的下面是两个窗口,一个是工作区窗口,用于列出工程中的各种对象,一个是源代码编辑窗口,用于各个对象的程序设计。

输出窗口显示项目建立过程中所产生的各种信息。

屏幕底端是状态栏,它给出当前操作或所选择命令的提示信息。

标题栏菜单栏工作区源代码编辑窗口状态栏图3.1 Visual C++ 6.0集成开发环境3.1.2 应用程序工程的建立方法Visual C++提供了一种称为App Wizard的工具,利用该工具,用户可以方便地按照自己的需要创建符合需要的应用程序框架。

使用VisualC快速构建图形学程序

使用VisualC快速构建图形学程序
如果不在OnPaint()中调用画图过程,而在某个 按钮或复选框的响应事件中调用,考虑会有什么 后果。
如果希望客户区在下次系统发送WM_PAINT消息 时被更新,则需先执行CWnd::Invalidate()函 数,否则OnPaint()方法不会反映当前在客户区 所作的更改。
WM_PAINT消息
启用Debug模式(工具栏上点击右键选中 “Build”,在编译类型中选择“Win32 Debug”),在可疑的出错点标上断点(在代码 行上按F9键),让程序执行到该处停下来,进而 执行单步跟踪(按F10键,跟踪变量的值)是查 错的基本方法。
在Debug模式下,VC环境中有一个调试工具栏窗
口(工具栏上点击右键选中”Debug”),同时
常用的绘图函数
5)绘制椭圆 CDC::Ellipse( int x1, int y1, int x2,
int y2 ); CDC::Ellipse( LPCRECT lpRect ); 6)在屏幕上打点 CDC::SetPixel( int x, int y,
COLORREF crColor ); CDC::SetPixel( POINT point,
1)规范的变量和函数命名,包括控件变量和 自定义变量、函数的命名
控件ID命名如:IDC_BUTTON_REMOVEPOINT 控件变量命名如:m_btnRemovePoint 自定义变量命名如:fBernstein,m_iPointNum 函数命名如:DrawBezier(int n, CPaintDC* dc)
为简单起见,推荐在OnPaint()中使用 CPaintDC类进行图形绘制。
WM_PAINT消息
WM_PAINT消息是Windows系统的标准消息, 当操作系统或其他应用程序发出请求要求画/重画 一个应用程序窗口的一部分时,便会向该应用程 序窗口发出该消息,该消息对绘图而言至关重要。 比如:

VisualC程序设计基础教程ch08精品PPT课件

VisualC程序设计基础教程ch08精品PPT课件
public void GetInfo() {
//利用base关键字调用基类Person的Display方法 base.Display(); Console.WriteLine("ID: {0}",this.id); }
AutCo#C程AD序计设算计机教辅程助设计
8.2 使用继承机制
清华大学出版社
AutCo#C程AD序计设算计机教辅程助设计
第8章 继承与多态
本章要点:
继承的概念 C#中的继承机制 虚方法与override 多态性
清华大学出版社
AutCo#C程AD序计设算计机教辅程助设计
8.1 什么是继承
清华大学出版社
一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。 通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角 度说,从已有的类(父类)产生一个新的子类,称为类的派生。类的继承 是用已有的类来建立专用类的编程技术。派生类继承了基类的所有特性 与功能,并可以对成员作必要的增加或调整。一个基类可以派生出多个 派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类 和派生类是相对而言的。一个派生类有且只能有一个基类,即C#不支持 多重继承机制。
同时基类与派生类也是一个成对的概念,一个孤立的类即不可能是 基类也不可能是派生类。
AutCo#C程AD序计设算计机教辅程助设计
8.2 使用继承机制
清华大学出版社
8.2.1 基类和派生类
C#中继承的语法格式如下: [访问修饰符] class <派生类名称> : <基类名称>
C#语言的继承机制除了要遵守上述语法规范外,还有如下规则: 派生类应当被看作是基类所具有的特性与功能的继承与扩展,而不是 简单的派生类“大于”基类; 派生类不能“选择性”的继承基类的属性与方法,必须继承基类的所 有特性与方法; 派生类可以在继承基类的基础上自由定义自己特有的成员; 基类的构造方法与析构方法不能被派生类继承,除此之外的其他成员 都能被继承,基类成员的访问方式不影响他们成为派生类的成员; 派生类中继承的基类成员和基类中的成员只是相同,并非同一个成员。
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CBrush br; br.CreateSolidBrush(RGB(255,0,0));
CBrush::CreateHatchBrush() 函数来初始化阴影画刷。
CBrush::CreateHatchBrush(int nIndex, DWORD crColor); 例如:创建一个十字线阴影的红色图案刷子 CBrush br; br.CreateHatchBrush(HS_CROSS,RGB(255,0,0));
1.4.映像模式
映像模式定义了将逻辑单位转化为设备的度量单位以及 设备的x方向和y方向,程序员可在一个统一的逻辑坐标系中操 作而不必考虑输出设备的坐标系情况
窗口:对应逻辑坐标系上程序员设定的区域 视口:对应实际输出设备上程序员设定的区域
窗口和视口 如何映射?
映射示意图---原始文档和显示的文档
中国地质大学计算机学院
中国地质大学计算机学院
三、Visual C++ 绘图操作
CDC类及其子类
画家==程序员 绘图操作== CDC类及其子类 绘图工具==CGdiObject类及其子类
中国地质大学计算机学院
3.1. CDC子类介绍--- CClientDC类
• CClientDC类只能在客户区绘图。 • 所谓客户区是指窗口区域中去掉边框、标题栏、菜单栏、工具 栏、状态栏等以外的部分,它是用户可以操作的区域。 例如打开Word文档将是将某个.doc文件显示在其客户区域中。 • 在使用CClientDC进行绘图时,一般要调用GetClientRect函数 来获取客户区域的大小。 • CClientDC类由CDC派生而来,它使调用和释放设备环境的过程 自动化。CClientDC对象在构造时调用Windows API函数GetDC, 在析构时调用响应的API函数ReleaseDC,这意味着与CClientDC对 象相关的设备环境是窗口的客户区 • CClientDC对象的窗口句柄保存在成员变量m_hWnd, 为构造CClientDC,需将CWnd作为参数传递给构造函数。
图形设备接口(GDI)
GDI负责系统与用户或绘图程序之间的信息交换,并控制在输出设 备上显示图形或文字, 是Windows系统的重要组成部分
Windows 支持与设备无关的图形
利用GDI和 Windows设 备驱动程序
开发人员只要建 立与输出设备的 关联,让系统加 载相应的设备驱 动程序即可
中国地质大学计算机学院
窗口移动后的刷新
用户区移动或显示 用户窗口大小改变 程序通过滚动条滚动窗口
三种 刷新
被覆盖区域的刷新
对象穿越后的刷新 (系统自动完成)
窗口被另一个窗口覆盖的 恢复如下拉式菜单关闭等
光标穿过用户区 图标拖过用户区
窗口被另一个窗口覆盖的区域称为无效区域。
Windows系统为每个窗口建立了一个PAINTSTRUCT结构,该 结构中包含了包围无效区域的一个最小矩形的结构RECT,应用 程序可以根据这个无效矩形执行刷新操作。
• All assignments are posted on the bulletin board and on the class Web site.
中国地质大学计算机学院
1.2. 图形设备接口与设备环境
Windows图形设备接口(GDI)是为与设备无关的图 形设计的。所谓设备的无关性,就是操作系统屏蔽了硬 件设备的差异,因而设备无关性能使用户编程时无需考 虑特殊的硬件设置
3.2. Visual C++的文本操作
文本输出函数 文本属性控制 文本的字体
中国地质大学计算机学院
3.2.1. 基本的文本输出函数
设置前景色: CDC::SetTextColor(int nColor); 设置背景色: CDC::SetBkColor(int nColor); 文本输出函数: CDC::TextOut(…); 示例: dc.SetTextColor(WHITE); dc.SetBkColor(DK_BLUE); dc.TextOut(10,10,“Here it is.”);
图形刷新是绘图过程中必须考虑的重要问题
包括
(1) 刷新请求
刷新请求 对刷新请求的响应 刷新方法
窗口大小的调整 窗口移动 被覆盖后的恢复
应用程序在窗口中 绘制了一个椭圆, 颜色列表框覆盖了
椭圆的一部分
关闭颜色选框后, 应用程序需要恢
复被覆盖部分的 颜色和形状
(2) 系统对刷新请求的响应
当用户区的内容需要刷新时,系统向应用程序消 息队列发送WM_PAINT消息,系统在应用程序的消 息队列中加入该消息,以通知窗口函数执行刷新处理
CWindowDC允许在显示器的任意位置绘图,坐标原点在整个窗 口的左上角。由于使用CWindowDC可以在整个窗口类绘图,这给了 程序员很大的自由度,但使用不当会带来麻烦。
在使用CWindowDC进行绘图时,一般要调用GetWindowRect函 数来获取整个应用程序窗口区域的大小。
CWindowDC 对 象 的 窗 口 句 柄 保 存 在 成 员 变 量 m_hWnd, 为 构 造 CWindowDC,需将CWnd作为参数传递给构造函数。
中国地质大学计算机学院
扩展的文本输出函数
文本输出除了前面讲的TextOut()外,常见的还有ExtTextOut(): 该函数的原型为:
BOOL ExtTextOut {
int x, int y; //输出的位置 UINT nOptions;//指定矩形的类型 LPCRECT lpRect;//输出的字符的矩形区域 const CString& str;//欲输出的字符 LPINT lpDxWidths ;//字符间距 }; 该函数用来在一个给定的矩形lpRect区域内输出字符串str,此矩 形可以设置为透明的(nOptions=ETO_OPAQUE)或不透明的,当矩 形区域为不透明时,用当前的背景色填充矩形。
中国地质大学计算机学院
2.1. 画笔---计算机中一条线有哪些属性?
线的坐标 线型 线宽 线的颜色
中国地质大学计算机学院
CPen类的操作步骤
(1)声明CPen对象。 (2)初始化画笔。 通过调用CreatePen成员函数可以初始化笔,该函数的原型
为:BOOL CreatePen( int nPenStyle, int nWidth, COLORREF crColor );
(3)将新建的画笔对象选进设备场景中,同时保存原画笔 对象的指针:
pOldPen=pDC->SelectObject(&pen);
(4)调用绘图函数生成图形。 (5)选择设备场景的原有画笔对象。
中国地质大学计算机学院
画笔的各种效果演示
中国地质大学计算机学院
2.2 画刷---有哪些属性?
中国地质大学计算机学院
CDC * pDC1;
(1) 设置坐标的映射模式
pDC1->SetMapMode(MM_ISOTROPIC);
(2) 设置逻辑坐标
pDC1->SetWindowExt(200,200); pDC1->SetWindowOrg(0,0);
(3)设置物理坐标
pDC1->SetViewportExt(rc.right,-rc.bottom); pDC1->SetViewportOrg(0,rc.bottom);
lpDxWidths是一个指向整数数组的指针, 此数组中存放以逻辑单位表示的字符间的距 离,第n个数代表第n个和n+1个字符之间的距 离。该参数为NULL时,则按缺省值处理。
1.5. 颜色
Windows使用宏RGB定义绘图的颜色,其形式为: RGB(nRed, nGreen,nBlue)
蓝色值 RGB(0,0,255) 绿色值 RGB(0,255,0) 红色值 RGB(255,0,0)
二、Visual C++ 绘图工具
CGdiObject类及子类
画家==程序员 绘图操作== CDC类及其子类 绘图工具==CGdiObject类及其子类
• 画家---程序员 • 画布---窗口客户区 • 画家使用的工具---画笔、画刷、调色板等
中国地质大学计算机学院
图形示例:
• Bring notebook, textbook, planner, and appropriate writing tools to class.
• Know due dates, and submit all coursework on time.
CDC子类介绍--- CWindowDC类
派生类CWindowDC(管理框架窗口) CWindowDC类直接从CDC派生,它使调用和释放整个窗口(包括 客户区和非客户区)的设备环境过程自动化。
CWindowDC对象在构造时调用Windows API函数GetWindowDC, 在析构时调用相应的API函数ReleaseDC,这意味着CWindowtDC对象 可访问CWnd所指向的整个屏幕区域。
}PAINTSTRUCT;
rcPaint 为标准的RECT数据结构, 其作用是标识无效矩形,它包含了 无效矩形的左上角和右下角的坐标
(3) 有效的刷新方法
记录事件。刷新 时重新执行这个 曾经发生的事件
常用的 Windows应用 程序刷新窗口 的方法
保存副本。刷 新时将副本拷 贝到相应的窗 口中
重新绘制。将图形 绘制处理程序放在 消息WM_PAINT 响应模块中,刷新 时重绘图形
中国地质大学计算机学院
扩展的文本输出函数
此矩形也可以设置为裁剪 (nOptions=ETO_CLIPPED)性质或非裁剪性 质,当设置为裁剪性质时,所有在矩形外面 的字符串将被裁剪掉。
上述参数中,nOptions主要设置矩形的类 型,可以为ETO_OPAQUE和ETO_CLIPPED两个值 的一个或两个组合;
相关文档
最新文档