一、本章知识点分析

1.窗体的缺省坐标系统

构成一个坐标系需要三个要素:坐标原点、坐标轴度量单位、坐标轴方向。坐标轴的度量单位由对象的ScaleMode属性来决定(有8种形式),缺省为Twip(缇)。默认的坐标原点(0,0)为对象的左上角,横向向右为X轴的正向,纵向向下为Y轴的正向。窗体的缺省坐标系统如图1所示。

2.定义坐标系的方法

有两种方法用于坐标系的定义。
(1)通过ScaleTop、ScaleLeft、ScaleWidth、ScaleHeight四项属性来实现
ScaleTop、ScaleLeft的值用于指定对象左上角坐标0,对象右下角的坐标为(ScaleLeft+ScaleWidth,ScaleTop+ ScaleHeight),根据左上角和右下角坐标的大小自动设置坐标轴的正向,X轴与Y轴的度量单位分别为1/ScaleWidth和1/ScaleHeight。所有对象的ScaleLeft、ScaleTop属性的缺省值为0,坐标原点在对象的左上角,当改变ScaleLeft、ScaleTop的值后,坐标系的X轴或Y轴按此值平移形成新的坐标原点。
例如,在Form1_Click()事件中通过属性定义窗体Form1的坐标系。

Private Sub Form_Click()ClsForm1.ScaleLeft = -14Form1.ScaleTop = 14Form1.ScaleWidth = 28Form1.ScaleHeight = -28Line (-14, 0)-(14, 0)Line (0, 14)-(0, -14)CurrentX = 0: CurrentY = 0: Print 0CurrentX = 13: CurrentY = 2: Print "X"CurrentX = 0.5: CurrentY = 13: Print "Y"
End Sub

程序运行界面如图2所示:

(2)采用Scale方法来设置坐标系
其语法如下:

   [对象名.]Scale[(x1,y1)-(x2,y2)]

(x1,y1)表示对象左上角坐标,(x2,y2)表示对象右下角坐标,VB根据给定的坐标参数计算出ScaleLeft、ScaleTop 、ScaleWidth 、ScaleHeight 的值。Scale方法不带参数时,则取消用户自定义的坐标系,而采用默认的坐标系。
例如,Form1.Scale(-14,14)-(14,-14)可建立和上图一样的坐标系。
复习教材图6.9和图6.10进一步理解用Scale方法设置坐标系的含义。

3.使用VB6.0的颜色

在程序运行时,有两种方式可以指定颜色值。
(1)使用RGB函数
(2)使用QBColor函数

4.图形控件

VB图形控件如表1所示


PictureBox控件和Image控件的异同点:
(1)两种控件都支持相同的图片格式。支持的图片格式有:位图(.bmp)、图标(.ico)、增强型图元文件(.emf)、普通图元文件(.wmf)、位图(.gif,可支持256种颜色)、位图(.jpeg可支持8位和24位颜色)。
(2)二者都具有Picture属性。
(3)PictureBox控件可作为容器,Image控件则不能
(4)PictureBox控件可以显示动态的图形信息,而Image控件只能用来显示静态的图形信息。
(5)Image控件使用的系统资源比PictureBox控件少,重新绘图速度快,但支持的属性、事件、方法较少。
(6)Image控件没有Autosize属性,但可通过Stretch属性来确定是否缩放图形来适应控件大小,PictureBox控件中的图形不能伸缩。

5. 多媒体控件(MMControl控件)

MMControl控件是一个专门用来管理多媒体控制接口MCI设备的ActiveX控件。它是具有一组执行MCI命令的下压式按钮。它被用来向诸如声卡、MIDI序列发生器、CD-ROM驱动器、视频CD播放器和视频磁带记录器及播放器等设备发出MCI命令。该控件也支持AVI视频文件的回放。
MMControl控件在窗体上的外观如图3所示。

常用属性有:AutoEnable属性、PlayEnabled属性、PlayVisible属性、Command属性、
DeviceType属性、Length属性、Notify属性、Mode属性。
常用事件主要有:Click事件、Done事件、StatusUpdate事件。StatusUpdate事件允许应用程序更新显示,以通知用户当前MCI设备的状态。应用程序可以从Position、Length和Mode等属性中获得状态信息。

6. 图形方法

VB常用图形方法如表2所示。

7. 绘图属性

常用绘图属性及功能如表3所示。

8. 在设计时添加图片

有两种方法:
(1)使用对象的Picture属性添加图片
(2)使用剪贴板,将图形粘贴到对象中

9在运行时添加图片

有两种方法
①使用LoadPicture函数加载图形文件,格式如下:

<对象名>.Picture=LoadPicture(“图形文件名”)

如使用如下语句可以删除Picture1图片框中的图形文件

 Picture1.Picture = LoadPicture()

②使用Picture属性在对象间相互复制,如使用如下语句:

      Picture2.Picture = Picture1.Picture

可将Picture1图片框中的图形拷贝到Picture2图片框中。

二、典型例题解析

1.设计一程序。要求单击装载按钮装入图形,且图形不随图片框大小而伸缩;单击复制按钮,将图片框中的图形复制到图形框中;单击清除按钮,清除两控件中的图形,并使两控件的高和宽均为1935;单击AutoSize按钮,图片框自动调整尺寸以适应图片的大小,单击Stretch按钮,图像框中的图形自动调整大小以适应图像框的尺寸。

解答
(1)界面设计
在窗体上建立一个图片框、一个图像框和5个命令按钮,其属性如下表:

程序设计界面如图4所示:

(2)编写Command1-Command5的事件代码
程序参考代码如下:

Private Sub Command1_Click()Picture1.Width = 1935Picture1.Height = 1935Picture1.AutoSize = FalsePicture1.Picture = LoadPicture("d:\图\莫扎特.jpg")
End SubPrivate Sub Command2_Click()Image1.Stretch = FalseImage1.Picture = Picture1.Picture
End SubPrivate Sub Command3_Click()Picture1.Width = 1935Picture1.Height = 1935Image1.Width = 1935Image1.Height = 1935Picture1.Picture = LoadPicture()Image1.Picture = LoadPicture()
End SubPrivate Sub Command4_Click()Picture1.AutoSize = True
End SubPrivate Sub Command5_Click()Image1.Width = 1935Image1.Height = 1935Image1.Stretch = True
End Sub

(3)运行程序
程序运行界面如图5所示:

2.创建一个绘图程序。当程序运行时,单击“开始“按纽,在Picture控件上画出随机彩色同心圆,单击“清屏” 按钮,则图像消失。要求坐标度量单位为毫米,边线的宽度为2像素,绘制的圆不超出窗体。程序运行界面如图6所示。


分析:
(1)用Circle方法画圆,需要确定圆心的位置和半径,根据题意将圆心设在窗体中心,则圆心的坐标为:X = Form1.ScaleWidth / 2, Y = Form1.ScaleHeight / 2,题目要求绘制的圆不超出窗体,所以圆的半径应为窗体净宽度和净高度中较小者的一半。
(2)题目要求坐标度量单位为毫米,则ScaleMode = 6。边线的宽度为2像素,则DrawWidth = 2。
程序代码如下:

Private Sub Command1_Click()  Dim X As Integer, Y As Integer, r As Integer, r1 As Integer, i As IntegerScaleMode = 6DrawWidth = 2X = Form1.ScaleWidth / 2Y = Form1.ScaleHeight / 2If ScaleWidth > ScaleHeight Thenr = YElser = XEnd IfFor r1 = 0 To rForm1.Circle (X, Y), r1, RGB(255 * Rnd, 255 * Rnd, 255 * Rnd)Next
End Sub
Private Sub Command2_Click()Cls
End Sub
3.建立坐标系,在坐标系上用Pset方法绘制-2到2之间的正弦曲线。程序运行界面如图7所示。


分析:
(1)可用Scale方法定义坐标系。由于所要绘制的正弦曲线在(-2,2)之间,考虑到四周的要有一些空隙,故X轴的范围可定义在(-8,8),Y轴的范围可定义在(-1.8,1.8)。采用Scale(-8,1.8)- (8,-1.8)定义坐标系。
(2)坐标轴用Line方法画出。
(3)用CurrentX、CurrentY属性设定当前位置,然后用Print方法标注原点,X轴和Y轴。
(4)用Pset方法绘制正弦曲线,为使曲线光滑,X轴上相邻两点的距离取0.01。

程序代码如下:

Private Sub Form_Click()Dim i As Double, x As Double, y As DoubleClsForm1.Scale (-8, 2)-(8, -2)Line (-7.5, 0)-(7.5, 0)Line (0, 1.8)-(0, -1.8)CurrentX = 7.5: CurrentY = 0.2: Print "X"CurrentX = 0.3: CurrentY = 1.8: Print "Y"CurrentX = 0.2: CurrentY = -0.1: Print "0"For i = -6.283 To 6.283 Step 0.01x = i: y = Sin(i)PSet (x, y)Next i
End Sub

三、自测题

(一)单项选择题

1.为了在运行时把d:\pic文件夹下的图形文件a.jpg装入图片框Picture1中,所使用的语句为( )。
A.Picture1.Text=LoadPicture(“d:\pic\a.jpg”)
B.Picture1. Picture =LoadPicture(“d:\pic\a.jpg”)
C.Picture1. Picture =LoadPicture(d:\pic\a.jpg)
D.Picture1. Picture =Load(“d:\pic\a.jpg”)
2.为了使图片框的大小自动适应图形的大小,则应( )。
A.将其AutoSize属性值设置为True
B.将其AutoSize属性值设置为False
C.将其Stretch属性值设置为True
D.将其Stretch属性值设置为False
3.执行指令”Line(200,200,)-(500,500,)”后,CurrentX=( )。
A.200 B.300
C.500 D.700
4.用于设置直线类型的属性是( )。
A. BorderStyle属性
B. DrawWidth属性
C. ScaleMode属性
D. ScaleWidth属性
5. 矩形、三角形、正方形、圆形4种图形中,不能用Shape控件绘制的是( )。
A. 矩形 B. 正方形 C. 三角形 D. 圆形
6.当使用Line方法画直线后,当前坐标在( )。
A. (0,0) B.直线起点 C. 直线终点 D.容器的中心
7.CLS可清除窗体或图形框中(程序运行时产生的图形和文字 )的内容。
A. Picture属性设置的背景图案
B. 在设计时放置的控件
C. 程序运行时产生的图形和文字
D. ScaleWidth属性
8.在VB中,进行音、视频处理都要用到多媒体控制接口,通过它实现对音频设备、视频设备及其它设备透明操作,这其中最为重要的是( )
A.MMControl控件 B.Data控件
C.SysInfo控件 D.媒体流处理技术

(二)填空题

1. 将图片框的AutoSize属性设置成 时,可使图片框根据图片调整大小。
2.若窗体Form1左上角坐标为(0,600),右下角的坐标为(800,-200)。则X轴的正向向 ,Y轴的正向向 。
3.Stretch属性设置为 时,图像框可自动改变大小以适应其中的图形。
4.窗体的实际可用高度和宽度由 和 属性确定。
5.设Picture1.ScaleLeft=-200,Picture1.ScaleTop=250,Picture1.ScaleWidth=250,Picture1.ScaleHeight=-400。则Picture1右下角坐标为 。
6.窗体的默认坐标原点在 ,X轴、Y轴的方向分别是 。
7.执行 Picture1.Picture=Loadpicture(“”) 语句,可以清除Picture1图片框内的图片。
8.使用Scale方法建立窗体Form1的用户坐标系,其中窗体左上角坐标为(-200,250),右下角坐标为(300,-100),具体形式为 。

答案

(一)单项选择题

1.B 2. A 3.D 4.A 5.C 6.C 7.C 8.A

(二)填空题

1.true
2.右 上
3.False
4.ScaleHeight ScaleWidth
5.(300,-150)
6.左上角 X轴向右,Y轴向下
7.Picture1.Picture=Loadpicture(“”)
8.Form1.Scale

VisualBasic程序设计第六章的学习与自测相关推荐

  1. c语言中 if(week == 6,C语言程序设计(第六章).pptx

    C语言程序设计(第六章)课案 第6章 用户定制数据类型及位运算;6.1 结构;6.1.1 概述;1.定义一个结构的一般形式为: struct 结构类型名 { 成员表 }; 成员表由若干个成员组成,每个 ...

  2. c语言作业题五六章答案,C语言程序设计五六章习题和课堂测试答案.doc

    C语言程序设计五六章习题和课堂测试答案 C语言程序设计第四五六章习题和课堂测试答案,还有期末C语言复习例题//3--1矩形面积 #includevoid main(){float a,b;float ...

  3. 第六章 Cesium学习入门之添加Geojson数据(dataSource)

    从0开始的Cesium 第一章 Cesium学习入门之搭建Vite+Vue3+Cesium开发环境 第二章 Cesium学习入门之搭建Cesium界面预览和小控件隐藏 第三章 Cesium学习入门之地 ...

  4. 21Winter\ C语言程序设计第六章

    C语言程序设计 第六章 ​ expr 2.1 #include<stdlib.h> #include<stdio.h> int main(){int i,n;scanf(&qu ...

  5. C语言程序设计第六章例题(数组)

    C语言程序设计第六章例题 例6.1 对十个元素依次赋值0,1,2,3,4,5,6,7,8,9,要求按逆序输出 例6.2 用数组来处理斐波那契数列 例6.3 有十个地区的面积,要求按从小到大输出 例6. ...

  6. [翻译] 神经网络与深度学习 第六章 深度学习 - Chapter 6 Deep learning

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 第五章 ...

  7. java语言程序设计第六章答案_Java语言程序设计(邵丽萍编著)第六章.doc

    Java语言程序设计(邵丽萍编著)第六章 第6章 (一)判断题 (1)抽象类不能实例化. ( ) (2)一个类中,只能拥有一个构造方法. ( ) (3)内部类都是非静态的. ( ) (4)接口中的所有 ...

  8. 强化学习(RLAI)读书笔记第六章差分学习(TD-learning)

    第六章:Temporal-Difference Learning TD-learning算法是强化学习中一个独具特色而又核心的想法,结合了蒙特卡洛算法和动态规划的想法.和MC一样不需要环境模型直接从s ...

  9. 计算机网络(BYSEE)第六章 应用层 学习笔记(0612)

    第六章 应用层 每个应用层协议都是为了解决某一类应用问题,通过位于不同主机中的多个应用进程之间的通信和协同工作来完成. 应用层的具体内容就是规定应用进程在通信时所遵循的协议 应用层的许多协议都是基于客 ...

最新文章

  1. stm32f10x_it.c 定义的程序列表模板(stm32f103x_it.c中放的是中断的空函数)
  2. Linux下SVN服务器的搭建
  3. python爬虫基础扫盲之HTTP以及HTTPS
  4. 抖音国际版TikTok因收集儿童信息在美被罚570万美元
  5. 【JVM】类是怎么加载的?
  6. AI预测自杀趋势 | 加拿大政府采集社媒数据干预自杀行为
  7. python新手入门代码-新手零基础入门Python项目实战
  8. CDlinux制作U盘启动盘,打造自己的口袋系统
  9. pandas df中有几个数组_还在抱怨pandas运行速度慢?这几个方法会颠覆你的看法
  10. Ruijie SSL V P N 垂直越权漏洞
  11. NXP恩智浦智能车四轮组-- 2.电磁检波电路、运放模块原理图
  12. 2018华为网络技术大赛复赛
  13. 辩证统一和有机统一的比较
  14. NewLife kick off
  15. pythondocker——外部无法访问,报错:该网页无法正常运作
  16. 什么是好的数据分析?化繁为简的力量
  17. echo /sbin/mdev > /proc/sys/kernel/hotplug 作用解析
  18. “百思不得姐,2021最新Java面试笔试题目分享
  19. COMSOL在云平台的使用教程,超高效的方法来了
  20. 非常好用的一个表设计工具EZDML使用详细教程

热门文章

  1. 调制解调器(俗称猫)
  2. R语言中使用boxplot函数绘制箱线图
  3. 公众号ChatGPT历史对话记录查看升级完成啦
  4. 全球智慧城市大会 | 数字冰雹受邀出席并作主题演讲
  5. STM32F103驱动VL53L0X激光测距模块
  6. 12款精品上瘾iOS游戏
  7. 极客时间——Swift学习笔记
  8. oracle的concat字符串太长,oracle 使用listagg函数后 字符串连接的结果过长
  9. python矩阵转置_对python矩阵转置transpose的实例讲解
  10. 如何测试服务器的带宽?