919601-图形程序设计-5
《Visual Basic程序设计基础》陈庆章 课后习题参考答案精编版

《Visual Basic程序设计基础》教材习题参考答案第1章 Visual Basic 6.0程序设计概述一、判断题1.√2.√3.×说明:同类控件(如两个标签)相互重叠,设计时可以设置“置前”、“置后”属性。
4.√5.×6.√7.×8.√9.√10.×11.√12.√13.×14.√15.×16.√17.√18.√19.√20.√二、选择题1. C2. B 3.D 4.C 5.B 6.A 7.D 8.A 9.B 10.A 11.C 12.D三、填空题1.对象、事件2.属性、方法、事件3.控件、屏幕(Screen)4.对象5.Left、Top 6.属性、<对象名>.<属性名>=<表达式> 7.网格8.F o rm19.Load或Initialize或Resize或Activate(自动执行的先后顺序也按此排列)10.Activate、Deactivate四、程序设计题程序1.界面设计参看图10-1、10-2以及表10-1。
表10-1 实例2各控件的主要属性设置过程设计如下:Private sub Form_Click()Command2.Enabled = FalseEen SubPrivate Sub Command1_Click()Label2.Visible = FalseLabel1.Caption = Text1.Text + ": 欢迎使用" + Label1.CaptionText1.Visible = FalseCommand1.Enabled = False: Command2.Enabled = TrueEnd SubPrivate Sub Command2_Click()EndEnd Sub程序2.界面设计略,过程设计如下:Private Sub Command1_Click() '字体变大Form1.FontSize = Form1.FontSize + 3Form1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command2_Click() '字体变小Form1.FontSize = Form1.FontSize - 3Form1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command3_Click() '字体加粗Form1.FontBold = TrueForm1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command4_Click() '字体不加粗Form1.FontBold = FalseForm1.Cls: Print "欢迎使用VB"End Sub运行时,不得连续、过多次单击“字体变小”按钮,因为当FontSize属性值小于0会产生适时错误。
第八章VisualC图形程序设计

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作为参数传递给构造函数。
《Visual Basic程序设计》课件项目九

项目九 图形与图像设计
属性值 0 1 2 3 4 5
表 9-1 Shape 属性的设置值
常数
说明
VbShapeRectangle VbShapeSquare VbShapeOval VbShapeOval VbShapeRoundedRectangle VbShapeRoundedSquare
(默认值)矩形 正方形 椭圆形 圆形 圆角矩形 圆角正方形
项目九 图形与图像设计
7.了解颜色属性 窗体和图片框都有两个关于颜色的属性BackColor和 ForeColor。BackColor属性用于定义绘画区的背景颜色,若 BackColor设置为灰色,则清除后整个区域为灰色。ForeColor 属性决定对象上绘制的文本或图形的颜色,改变ForeColor属 性不影响已创建的文本或图形。
[〈对象〉.] DrawMode [=〈值〉] 其中,〈值〉的范围为1~16,按其复杂程度可分为表9-4 所示的四类。
项目九 图形与图像设计
表 9-4 最简单的 DrawMode 功能
值
功能
1
像素变黑
16
像素变白
11
像素颜色保持原色不变,即空操作(NOP),效果相当于关闭绘图
6
像素颜色变成其补色,即所有颜色数据变反(0 变 1,1 变 0)
项目九 图形与图像设计
在设计时,可以使用Line控件在窗体上可视化地安排直线 的位置、长度、颜色、宽度、实虚线等属性。运行时不能使用 Move方法移动Line控件,但是可以通过改变X1、X2、Y1和 Y2属性来移动它或者调整它的大小。
BorderStyle属性的效果取决于BorderWidth 属性的设置。 如果BorderWidth的值不是1,并且BorderStyle的值不是0或6, 则将BorderStyle的值自动设置为1。
书本习题参考答案 Visual Basic 程序设计基础 浙江科技出版社 陈庆章 主编

《Visual Basic程序设计基础》教材习题参考答案第1章Visual Basic 6.0程序设计概述一、判断题1.√2.√3.×4.√5.×6.√7.×8.√9.√10.×11.√12.√13.×14.√15.×16.√17.√18.√19.√20.√二、选择题1. C2. B 3.D 4.C 5.B 6.A 7.D 8.A 9.B 10.A 11.C 12.D三、填空题1.对象、事件2.属性、方法、事件3.控件、屏幕(Screen)4.对象5.Left、Top 6.属性、<对象名>.<属性名>=<表达式> 7.网格8.F o rm19.Load或Initialize或Resize或Activate(自动执行的先后顺序也按此排列)10.Activate、Deactivate四、程序设计题程序1.界面设计参看图10-1、10-2以及表10-1。
表10-1 实例2各控件的主要属性设置过程设计如下:Private sub Form_Click()Command2.Enabled = FalseEen SubPrivate Sub Command1_Click()Label2.Visible = FalseLabel1.Caption = Text1.Text + ": 欢迎使用" + Label1.CaptionText1.Visible = FalseCommand1.Enabled = False: Command2.Enabled = TrueEnd SubPrivate Sub Command2_Click()13EndEnd Sub程序2.界面设计略,过程设计如下:Private Sub Command1_Click() '字体变大Form1.FontSize = Form1.FontSize + 3Form1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command2_Click() '字体变小Form1.FontSize = Form1.FontSize - 3Form1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command3_Click() '字体加粗Form1.FontBold = TrueForm1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command4_Click() '字体不加粗Form1.FontBold = FalseForm1.Cls: Print "欢迎使用VB"End Sub运行时,不得连续、过多次单击“字体变小”按钮,因为当FontSize属性值小于0会产生适时错误。
visual basic 程序设计(第5版)

《Visual Basic程序设计(第5版)》是一本由清华大学出版社出版的图书,主要介绍了Visual Basic 6.0的基础知识、语言语法和开发应用。
在Visual Basic 6.0中,用户可以创建包含文本、图形和多媒体的交互式应用程序。
该语言具有简单易学的特点,适用于初学者和开发人员。
此外,《Visual Basic程序设计(第5版)》还介绍了Visual Basic 6.0的集成开发环境(IDE),包括窗体设计器、代码编辑器和属性窗口等。
该书还介绍了如何使用工具箱添加控件、设置属性、编写代码和调试程序等操作。
总的来说,《Visual Basic程序设计(第5版)》是一本全面介绍Visual Basic 6.0的书籍,适合初学者和开发人员阅读。
第5章-Windows绘图程序设计 浙江农林

• BOOL Pie( • int x1, • int y1, • int x2, • int y2, • int x3, • int y3, • int x4, • int y4 • );
• BOOL Pie( • LPCRECT lpRect, • POINT ptStart, • POINT ptEnd • );
4.线条集
•
• • • • • • • •
在CDC类中,可以直接调用Polyline() 和PolylintTo()函数绘制弧线,函数原型如 下:
BOOL Polyline( LPPOINT lpPoints, int nCount ); BOOL PolylineTo( const POINT* lpPoints, int nCount );
2.CPaintDC类
• 在Windows应用程序中,通常在绘制 图像之前调用函数BeginPaint(),然后在设 备上下文中进行一系列的绘制操作,最后 调用EndPaint函数结束绘制。
•
在MFC中,CPaintDC类完全封装了这 一过程,其机制是这样的:在构造 CPaintDC对象的同时,其构造函数自动调 用BeginPaint()函数;在销毁CPaintDC对 象的同时,其析构函数自动调用EndPaint() 函数。 • 因此整个过程可以简化如下:构造 CDC对象,执行绘制操作,最终销毁CDC 对象。
2.椭圆
•
• • • • • • • • •
在CDC类中,调用Ellipse()函数可以 绘制一个椭圆,该函数的原型如下:
BOOL Ellipse( int x1, int y1, int x2, int y2 ); BOOL Ellipse( LPCRECT lpRect );
程序设计基础知识+-+程序设计+课件—2024学年人教_中图版(2019)高中信息技术必修1

选择结构——判断一个正整数奇偶性
• 例:如果一个正整数X能被2整除,那么这 个数为偶数,否则为奇数
流程图
开始
输入一下正整数X
X%2=0 输出“偶数”
输出“奇数”
结束
程序实现
• X=int(input(“请输入一个正整数:”)) • If x%2==0; • print(x,"是偶数。”) • Else: • Print(x,”是奇数。”)
程序语言用缩进的方式标识语句块,表示语句间的层次 关系。同一级语句块中的语句具有相同的缩进量。
根据问题选择单分支和双分支还是多分支结构
案例:某城市轨道交通实行分段计程标价,起步标价 为乘坐5站内(含5站)标价2元;
乘坐5站以上10站以下(含10站),单人标价3元; 乘坐10站以上16站(含16站),单人票价4元; 16站以上单人标价5元。
Light.penup()
#黄灯
Light.goto(0,-60)
Light.pendown()
Light.color("yellow",yellow")
Light.begin_fill()
Light.circle(20)
Light.end_fill()
Light.penup()
#绿灯
Light.goto(0,-120)
例:“倒计时15s”功能实现程序流程图。
开始 初始化部分 循环控制条件
False
循环体
循环结束后的语句 结束
代码实现
• Import turtle • Import time • Text = turtle.turtle( ) • Text.hideturtle( ) • I=15 • While i>=1: • Text.write(i,font=(“黑体”,14,“normal”)) • Time.sleep(1) • Text.clear( ) • I=i-1
C#可视化程序设计案例教程(第5版)模块9 开发C#应用程序

For those who have seen the Earth from space, and for the hundreds and perhaps thousands
【工作任务实现】
C# 开发C#应用程序
3. 项目测试 编译运行程序,输入n的值,例如8,查看输出结果是否为20,按回车键结束程序运行。 再次运行程序,输入7,查看输出结果是否为16,按回车键结束程序运行。若两次运行 结果均正确,说明程序编写正确。 4. 项目总结 本任务编写了一个简单控制台应用程序,以练习控制台应用程序的开发方法。程序难 点是循环和分支算法,可参阅模块3有关C#语法的内容。
表9-2 Convert类的常用方法
方法名
说明
ToBoolean()
将指定的值转换为等效的布尔值
ToByte()
将指定的值转换为8位无符号整数
ToChar()
将指定的值转换为Unicode字符
ToDateTime()
将指定的值转换为DateTime
ToDecimal()
将指定的值转换为Decimal数字
ToDouble()
将指定的值转换为双精度浮点数字
ToInt16()
将指定的值转换为16位有符号整数
ToInt32()
将指定的值转换为32位有符号整数
ToInt64()
将指定的值转换为64位有符号整数
ToSByte()
将指定的值转换为8位有符号整数
ToSingle()
将指定的值转换为单精度浮点数字
ToString()
C#可视化程序设计案例教程(第5版)
模块9 开发C#应用程序
机械工业出版社
CONTENT
C# 开发C#应用程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 发射光
辐射光模拟源自某些物体的光,是最简单的一种 光。在光照模型中,物体表面发射光可增加物体的 亮度,它直接从物体发出并且不受任何光源影响。
在OpenGL中,场景中来自几个不同光源的光可以 单独打开或者关闭。房间内打开一盏电灯时,大多 数光直接来自于这个灯泡,但也有一些光从墙壁反 射过来,这种反射过来的光可称之为环境光,可认 为是均匀散布的,没有特定的方向。场景中也可以 有其他环境光,这些光线经过多次反射,无法确认 来源。当然光源本身还有可能发出发射光。由于我 们知道光是一种波,而颜色仅仅是我们可以看见的 一种光波,所以每种光照成分都是由RGBA值定义的。
GLfloat light_position[]={1.0,1.0,1.0,0.0}; glLightfv(GL_LIGHT0,GL_POSITION,light_position);
光源位置坐标采用的齐次坐标(x, y, z, w),这里的w 为0,所以相应的光源是定向光,(x, y, z)描述光源的方 向,这个方向也要进行模型变换。GL_POSITION的缺 省值是(0.0, 0.0, 1.0, 0.0),它定义了一个方向指向Z负 轴的平行光源。若w非零,光源为定位光源。(x, y, z, w)指定光源在齐次坐标系下的具体位置,这个位置经
1. 环境光(AMBIENT LIGHT)
环境光是指在环境中进行充分散射,无法分辨其 方向的光。它有光源,但是由于被周围的环境,如地 面、天空、墙壁等多次反射,无法确定它的来源具体 是什么。环境光均匀地从周围环境入射至景物表面并 等量地向各个方向反射出去。一般说来,房间里的环 境光成分要多一些,户外的相反要少得多,因为大部 分光按相同的方向照射,而在户外很少有其他物体反 射的光。如户外的探照灯能够包含的环境光成分就比 较少,绝大多数光线沿着一个方向照射,并且很少能 够遇到物体反射进入眼睛。
5.2.1 定位和衰减
光源有无穷远光源和近光源两种形式。无穷远光 源又称作定向光源,即这种光到达物体时是平行光, 例如现实生活中的太阳光。近光源又称作定位光源, 光源在场景中的位置影响场景的光照效果,尤其影响 光到达物体的方向。台灯是定位光源的范例。在以前 所有与光照有关的例子里都采用的是定向光源,如:
过模型变换等在视点坐标系下保存下来。
真实的光,离光源越远则光强越小。因为定向光源 是无穷远光源,因此距离的变换对光强的影响几乎没有, 所以定向光没有衰减,而定位光有衰减。OpenGL的光 衰减是通过光源的发光量乘以衰减因子计算出来的。其 中缺省状态下,常数衰减因子是1.0,其余两个因子都 是0.0。用户也可以自己定义这些值,如:
5.2.2 聚光灯
定位光源可以定义成聚光灯形式,即将光的形状限制在一 个圆锥内。OpenGL中聚光的定义包括以下几步: 1. 定义聚光源位置。 因为聚光源也是定向光源,所以他的位置同一般定向光一 样。 2. 定义聚光截止角。 利用函数glLightf使用参数GL_SPOT_CUTOFF定义聚光 光锥的轴与中心线的夹角,也可说成是光锥顶角的一半。 缺省时,这个参数为180.0,即顶角为360度,光向所有的 方向发射,因此聚光关闭。一般在聚光启动情况下,聚光 截止角限制在[0.0,90.0]之间,如下面一行代码设置截止角 为45度:
注意,在大多数情况下,环境光和漫反射光的成分是相同 的,而一般不需要指定镜面反射指数,除非需要镜面亮斑。
第二种更常用的方法是使用颜色跟踪法。通过颜色跟踪法, 只需要通过调用glColor就可以设置材质属性。要使颜色跟 踪法有效,必须调用带有参数GL_COLOR_MATERIAL的 glEnable函数。然后用glColorMaterial函数指定多边形的哪 一个面使用颜色跟踪法。代码如下:
glMaterialfv函数的第一个参数指定多边形的前面 (GL_FRONT),背面(GL_BACK)或者两面 (GL_FRONT_AND_BACK)具有指定的材质属性。第二 个参数则指定当前设置的是哪一种材质属性,这里我们使 用GL_AMBIENT_AND_DIFFUSE,即设置环境光和漫反射 光的值。最后一个参数是一个数组,它包含了构成属性的 RGBA值。
采用这个物理量可以正确描述光在物体表面的反射、透 射和吸收现象,因而可以正确计算处物体表面在空间给定方 向上的光能颜色。
物体表面向空间给定方向辐射的光强可应用光照模型 进行计算。简单的光照模型通常假定物体表面是光滑的且 由理想材料构成,因此只考虑光源照射在物体表面产生的 反射光,所生成的图形可以模拟处不透明物体表面的明暗 过渡,具有一定的真实感效果。复杂的光照模型除了考虑 上述因素外,还要考虑周围环境的光对物体表面的影响。 如光亮平滑的物体表面会将环境中其它物体映像在表面上, 而通过透明物体也可看到其后的环境景象。这类光照模型 称为整体光照模型,它能模拟出镜面映像、透明等较精致 的光照效果。
glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,material_am biemt);
函数的第一个参数指定多边形的前面(GL_FRONT),背 面(GL_BACK)或者两面(GL_FRONT_AND_BACK) 具有指定的材质属性。第二个参数则指定当前设置的是哪 一种材质属性,这里我们用GL_AMBIENT_AND_DIFFUSE, 即设置环境光和漫反射光的值。最后一个参数是一个数组, 它包含了构成属性的RGBA值。
当光照射到一个物体表面上时,可能会出现如下情形: 首先,光可以通过物体表面向空间反射,产生反射光;其次, 对于透明物体,光可以穿透该物体并从另一端射出,产生透 射光;最后,部分光被物体表面吸收而转换成热。在这些光 中,人眼可以观察到的是反射光和透射光。物体体本身还有 可能发光,比如发光的灯泡。这里我们暂时不考虑透明物体, 这样场景中可能存在以下几种类型的光,即环境光、漫反射 光、镜面光和辐射光。
思考:
尽管光源发出的光具有相同分布的频 率,但是它的环境、散射和镜面成分可能 不同。如果红色墙壁的房间内有一盏白色 的灯,请分析各种光的成分及颜色分别是 什么?
5.1.2 材料颜色
当我们使用光照来描述多边形,总是说它由具有 某些反射属性的材质组成,而不说它具有特殊的颜色。 这样我们指定物体的颜色,就必须指定物体材质对环 境光、漫反射光和镜面光源的反射属性。通常,我们 用材质对光的红、绿、蓝三原色的反射率来近似定义 材质属性。象光源一样,材质颜色也分成环境、漫反 射和镜面反射成分,它们决定了材质对环境光、漫反 射光和镜面反射光的反射程度。
在进行光照计算时,物体的最终颜色是由其材质属性的 RGB值 和光照属性的RGB值共同决定的。例如,如果当 前的环境光源的RGB值为(0.5,1.0,0.5),而物体的 材质的环境反射成分的RGB值为(0.5,0.5,0.5),那 么物体最终的颜色为: (0.5×0.5,1.0×0.5,0.5×0.5)=(0.25,0.5,0.25) 即将每个环境光源的成分与材质的环境反射率相乘。这样, 物体表面的颜色为三项RGB值的叠加:材质对环境光的反 射率与环境光结合的RGB值;材质对漫反射光的反射率与 漫反射光结合的RGB值;材质对镜面光的反射率与镜面反 射光结合的RGB值。注意,当叠加的RGB中任何一个颜 色分量的值大于1.0,那么就用1.0计算。
为了更真实的绘制图形,还要考虑物体表面的细节 纹理,这通常使用一种称为“纹理映射”(texture mapping) 的技术把已有的平面花纹图案映射到物体表面上,并在应 用光照模型时将这些花纹的颜色考虑进去,物体表面细节 的模拟使绘制的图形更接近自然景物。
5.1.1 发射光,环境光,漫反射光和镜面反射光
2.漫反射光(DIFFUSE LIGHT)
漫反射光来自某个方向。它从正面照射物体表面 时比倾斜时更明亮。一旦它照射到物体上,则在各个 方向上均匀地发散出去。因此无论观察点在任何位置, 看到的物体都是一样亮。。来自特定位置和特定方向 的任何光,都可能有散射成分。
3.镜面反射光(SPECULAR LIGHT)
glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
5.2 创建光源
接下来,我们就可以动手创建第一个光源,使得 场景中的物体在光线的照射下具有真实感。光源的创 建涉及定位和衰减、个数以及光源的位置和方向等细 节。
glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,45.0);
3. 定义聚光方向。
聚光方向决定聚光光锥的轴,它使用齐次坐标定义,缺 省值为(0.0,0.0,-1.0),即指向Z负轴。聚光方向也要进行几 何变换,其结果保存在视点坐标系中。聚光方向是通过函 数glLightfv使用参数GL_SPOT_DIRECTION定义,如下面 一段代码:
GLfloat spot_direction[]={-1.0f, -1.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);
4. 定义聚光指数。
参数GL_SPOT_EXPONENT控制光的集中程度,光锥中心 的光强最大,越靠边的光强越小,缺省时为0。如下面的代码:
在设置了光照模型之后,我们还需要设置绘制物体的材 质属性,使多边形能够反射光,这样就可以看到三棱锥了。 设置材质属性的方法有两种,一种是在绘制每个多边形或 者多边形集和之前利用glMaterial函数。
下面的代码指定了后面绘制的多边形都具有相同的材质属 性:
GLfloat material_ambiemt[]={0.75f, 0.75f, 0.75f, 1.0f};
glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,2.0); glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,1.0); glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.5);