《VB图形操作与多文档窗体.ppt》由会员分享,可在线阅读,更多相关《VB图形操作与多文档窗体.ppt(38页珍藏版)》请在三一办公上搜索。
1、,6.1 绘图板,6.2 电子相册,6.3 知识进阶,第六章 图形操作与多文档窗体,本章要点,常用的作图方法图形控件多文档窗体的使用,1、项目界面展示,6.1 绘图板,2、项目分析,本项目实例主要运用了VB6.0的Line、Circle、Pset方法来画出各种图形。并用两个标签的背景色来标明当前绘图区域的前景色和填充色,单击标签时弹出颜色对话框,来选择前景色和填充色。利用3 个组合框设置“线型”、“线宽”、“填充样式”。,6.1 绘图板,3、项目实现,程序界面的设计界面对象属性设置编写对象事件过程代码,6.1 绘图板,4、相关知识点,4.1坐标系统概述,每个容器都有一个坐标系,构成一个坐标系,
2、需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。,6.1 绘图板,包括5个属性(ScaleLeft、ScaleTop、ScaleWidth、ScaleHeight、ScaleMode)1个方法(Scale)ScaleTop、ScaleLeft属性用于控制容器对象左边和顶端的坐标,根据这两个属性值可形成坐标原点。,一、使用默认的刻度,4、相关知识点,6.1 绘图板,坐标度量单位由容器对象的ScaleMode属性决定。缺省时为Twip。每英寸1440个Twip,20个Twip为一磅。,4、相关知识点,6.1 绘图板,二、自定义坐标系,4、相关知识点,语法格式:对象名.Scale(x1,y
3、1)-(x2,y2),6.1 绘图板,1.用AutoRedraw创建持久的图形,每个窗体和图片框都具有AutoRedraw属性。(1)当AutoRedraw为默认值False时,VB会把图形输出到屏幕,而不输出到内存。(2)当AutoRedraw为True时,VB会把图形输出并保存在内存中。,注意:运行时,只有当AutoRedraw为True时,才可以用Cls方法清除。,举例:,4.2使用Visual Basic作图,4、相关知识点,6.1 绘图板,2、使用CurrentX、CurrentY设置当前坐标(1)窗体或图形框或打印机的CurrentX、CurrentY属性给出这些对象在绘图时的当前
4、坐标。(2)这两个属性在设计阶段不能使用。当坐标系确定后,坐标值(x,y)表示对象上的绝对坐标位置。(3)如果坐标值前加上关键字Step,则坐标值(x,y)表示对象上的相对坐标位置,即从当前坐标分别平移x、y个单位,其绝对坐标值为(CurrentX+x,CurrentY+y)(4)使用CLS方法后,CurrentX、CurrentY属性值为0。,4、相关知识点,6.1 绘图板,3、用DrawWidth和DrawStyle属性设置 线宽与线型 窗体、图形框或打印机的DrawWidth属性给出这些对象上所画线的宽度或点的大小。DrawWidth属性以像素为单位来度量,最小值为1。例6.2 用Dra
5、wWidth属性改变直线宽度。,4、相关知识点,6.1 绘图板,窗体或图形框或打印机的DrawStyle属性给出这些对象上所画线的形状。,注意:只有当DrawWidth设置为1时,DrawStyle属性才会产生如上图所示的各种效果。,4、相关知识点,6.1 绘图板,4、填充与色彩 由Fillstyle、Fillcolor这两个属性决定封闭图形的填充方式。(1)Fillcolor指定填充图案的颜色,默认的颜色与Forecolor相同。(2)FillStyle属性取值07,用来指定填充的图案,共有8种内部图案。,注意:如果FillStyle设置为1(透明),则忽略FillColor属性,但Form
6、对象除外。,4、相关知识点,6.1 绘图板,4、相关知识点,三个重点内容(方法),点、线、圆,6.1 绘图板,1、画点(Pset方法),例:1.Pset(500,1000),RGB(255,0,0)2.Pset(500,1000),BackColor 擦除该点,格式:对象.Pset(x,y),Color,参数说明:(X,Y):确定画点的位置 单精度,可以是常量或变量和表达式 Color:设置点的颜色缺省时,点的颜色为ForeColor,4、相关知识点,6.1 绘图板,2、项目实例实现(演示),For i=-180 To 180 Step 0.01Picture1.PSet(i/50,5*Sin
7、(i*3.14/180)Next i,4、相关知识点,用点画正弦曲线,6.1 绘图板,直线格式:对象.LineStep(x1,y1)-Step(x2,y2),Color,参数说明:(X1,Y1):画线的起点,省略:当前坐标为起始坐标。(X2,Y2):直线的终点 Color:设置直线的颜色 缺省时,为ForeColorStep:表示后面的坐标相对于当前坐标的偏移量,4、相关知识点,2、画线(line方法),6.1 绘图板,举例:Private Sub Command1_Click()Line(1000,1000)-(2000,2000)Line-(300,3000)Picture1.Line(1
8、00,500)-Step(2000,2000)Picture1.Line(1500,1500)-Step(200,200),vbBlueEnd Sub,如何改变直线的粗细和线型?,DrawWidth属性:指定线的宽度(以磅为单位)。DrawStyle属性:指定线型。,4、相关知识点,6.1 绘图板,矩形格式:对象.LineStep(x1,y1)-Step(x2,y2),Color,BF,参数说明:(X1,Y1):矩形的左上角点,省略:当前坐标的为起始坐标,(X2,Y2):矩形的右下角点B:表示画一个矩形;F:表示画一个实心的矩形,这时忽略 Fillcolor和FillStyle属性,注意:有B
9、参数才能使用F,例1:Private Sub Command1_Click()Line(500,500)-Step(1000,0)Line-Step(0,1000)Line-Step(-1000,0)Line-Step(0,-1000)Line(500,500)-Step(1000,1000),BFEnd Sub,4、相关知识点,6.1 绘图板,怎样在窗体上绘制一幅颜色、大小各不相同的彩环?,效果如图,4、相关知识点,6.1 绘图板,格式:对象.CircleStep(x,y),半径,Color,起始角,终止角,纵横比,参数说明:,起始角和终止角:取值在0 时为圆弧。如果起始角的绝对值大于终止角
10、的绝对值,则画一个角度大于180的圆弧;如果为负数,则画出扇形。,3、画圆(circle方法),4、相关知识点,6.1 绘图板,4、相关知识点,6.1 绘图板,Private Sub Command1_Click()X=Form1.Width Y=Form1.Height For I=1 To 10 R=Rnd*Y*0.1 Circle(X*Rnd,Y*Rnd),R,QBColor(I)Next IEnd Sub,(3)画圆代码实现(演示),4、相关知识点,6.1 绘图板,4、相关知识点,4.3鼠标事件,6.1 绘图板,4、相关知识点,4.3鼠标事件,利用鼠标事件完成简单的绘图板,6.1 绘图
11、板,4、相关知识点,4.3鼠标事件,Private Sub Form_MouseDown(Button As Integer,Shift AsInteger,X As Single,Y As Single)CurrentX=X CurrentY=YEnd SubPrivate Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=1 Then Line-(X,Y)End Sub,绘图板的代码,6.1 绘图板,6.2 电子相册,1、项目目标,本项目实例主要任务是设计完成“休闲
12、娱乐”中的“电子相册”界面,单击“新建”菜单,打开一个通用对话框,选择一个图片文件后,产生一个新的子窗体,并在子窗体上显示图片;通过选择“层叠”、“平铺”、“排列”菜单会使打开的多个子窗口进行相应方式的排列。,6.2 电子相册,2、项目分析,本项目实例主要运用了VB6.0的MDI窗体的相关知识。在窗体上添加菜单栏,然后建立一个子窗体作为模板,并按相应模式排列窗体。,6.2 电子相册,3、项目实现,1.程序界面设计和属性设置,(1)建立MDI窗体。选择“工程”“添加MDI窗体”。添加一个MDI窗体,新建的MDI窗体名称为“MDIForm1”,Caption属性为“相册”。(2)在MDI窗体中添加
13、菜单栏,4个菜单项分别为“新建”、“层叠”、“平铺”、“排列”。(3)在工程中添加新窗体Form14,设置Form14的Caption属性为“相册”,MDIChild属性为“True”。,6.2 电子相册,3、项目实现,2.编写对象事件过程代码,6.2 电子相册,4、相关知识,多文档界面(Multiple Document Interface,即MDI)与多重窗体不是一个概念。多重窗体程序中的各个窗体是彼此独立的。MDI虽然也可以含有多个窗体,但它有一个父窗体,其他窗体(子窗体)都在父窗体内。,1、什么是多文档界面?,6.2 电子相册,4、相关知识,2、多文档界面有如下特性:,(1)所有子窗体
14、均显示在MDI窗体的工作区中。用户可改变、移动子窗体的大小,但被限制在MDI窗体中。(2)当最小化子窗体时,它的图标显示于MDI窗体上而不是在任务栏中。当最小化MDI窗体时,所有的子窗体也被最小化,只有MDI窗体图标出现在任务栏中。(3)当最大化一个子窗体时,它的标题与MDI窗体的标题一起显示在MDI窗体的标题栏上。(4)MDI窗体和子窗体都可以有各自的菜单,当子窗体加载时覆盖MDI窗体的菜单。,6.2 电子相册,4、相关知识,3、创建和设计MDI窗体及其子窗体 开发多文档界面的一个应用程序至少需要两个窗体:一个(只能一个)MDI窗体和一个(或若干个)子窗体。在不同窗体中共用的过程、变量应存放
15、在标准模块中。,添加MDI窗体 选择“工程”菜单中的“添加MDI窗体”命令,然后从相应的对话框中选择“MDI窗体”,再单击“打开”按钮。这样就添加了一个MDI窗体。,6.2 电子相册,对子窗体或子窗体图标的层叠、平铺和排列图标命令通常也放在“窗口菜单上,用Arrange方法来实现。Arrange方法的语法形式如下:排列方式取值如下:0-vbCascade:层叠所有非最小化MDI子窗体。1-vbTileHorizontal:水平平铺所有非最小化MDI子窗体。2-vbTileVertical:垂直平铺所有非最小化MDI子窗体。3-vb ArrangeIcons:对任何已经最小化的子窗体排列图标。,
16、4、相关知识,6.2 电子相册,(1)活动子窗体和活动控件在VB中,提供了访问MDI窗体的两个属性,即ActiveForm和ActiveControl,前者表示具有焦点的或者最后被激活的子窗体,后者表示活动子窗体上具有焦点的控件。注意:当访问ActiveForm属性时,至少应有一个MDI子窗体被加载或可见,否则会返回一个错误。在代码中指定当前窗体的另一种方法是用Me关键字。用Me关键字来引用当前其代码正在运行的窗体。当需要把当前窗体实例的引用参数传递给过程时,这个关键字很有用。例如要关闭当前窗口,其语句为:Unload Me,4、相关知识,6.2 电子相册,(2)显示MDI窗体及其子窗体显示MDI窗体及其子窗体的方法是Show。加载子窗体时,其父窗体(MDI窗体)会自动加载并显示。而加载MDI窗体时,其子窗体并不会自动加载。,4、相关知识,MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体。如果它被设置为True,则当改变子窗体的属性(如Caption等)后,会自动显示该子窗体,不再需要Show方法;如果设置AutoShowChildren为False,则改变子窗体的属性值后,不会自动显示该子窗体,子窗体处于隐藏状态,直至用Show方法把它们显示出来。MDI子窗体没有AutoShowChildren属性。,6.2 电子相册,