第10章图形操作Word文件下载.docx
- 文档编号:22461969
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:21
- 大小:405.84KB
第10章图形操作Word文件下载.docx
《第10章图形操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《第10章图形操作Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
磅(point:
每逻辑英寸为72个磅)
vbPixels
3
像素(pixel:
监视器或打印机分辨率的最小单位)
vbCharacters
4
字符(水平每个单位=120缇;
垂直每个单位=240缇)
vbInches
5
英寸
vbMillimeters
6
毫米
vbCentimeters
7
厘米
ScaleMode属性默认时为Twip(中文译为缇)。
每英寸为1440缇,20个缇为1磅(Point)。
这一度量单位规定的是对象打印时的大小,屏幕上的实际物理距离因显示器分辨率而异,普通VGA显示器在800*600模式下,最大窗体尺寸约为12000*8700缇。
改变容器对象的ScaleMode属性设置,不会改变容器的大小和它在屏幕上的位置。
只是改变了容器对象的度量单位。
VB会重新定义对象的ScaleHeight和ScaleWidth属性,以便使它们与新刻度保持一致。
窗体的Height属性包括了标题栏和水平边框宽度,同样Width属性值包括了重直边框宽度。
实际可用高度和宽度由ScaleHeight和ScaleWidth确定。
10.1.2自定义坐标系统
容器对象的默认坐标系统对绘制控件不会有什么影响,但对作图就有较大的影响。
因为平时我们习惯的坐标原点在中心(这是指数学上的),所以常需要对坐标原点进行重新设置。
Scale方法是建立用户坐标系统最方便的方法。
其语法是:
[对象.]Scale[(xLeft,yTop)-(xRight,yBottom)]
其中:
(1)对象可以是窗体、图片框或打印机。
如果省略对象名,则为带焦点的窗体。
(2)(xLeft,yTop)表示对象的左上角的坐标值,(xRight,yBottom)为对象的右下角的坐标值。
只要给定了对象的这两个点坐标值,VB会自动计算出ScaleTop、ScaleLeft、ScaleHeight和ScaleWidth的值:
ScaleTop=yTop
ScaleLeft=xLeft
ScaleHeight=xRight-xLeft
ScaleWidth=yBottom-yTop
思考:
由于同一大小的窗体或图片框可以定义成不同的坐标系统,在不同的坐标系统下,一个点的大小是否相同呢?
例10-1定义一个坐标系统,其坐标原点为(0,0),即原点在窗体的中央位置,如图10-1所示。
PrivateSubForm_click()
Me.Scale(-100,100)-(100,-100)
'
定义坐标系统让窗体左上角坐标为(-100,100),右下角为(100,-100)
Line(-100,0)-(100,0)'
画横坐标
Line(0,100)-(0,-100)'
画纵坐标
EndSub
代码写在窗体的Click事件中,运行后,单击窗体即可。
10.2与绘图有关的属性
10.2.1CurrentX和CurrentY
窗体、图片框或打印机的CurrentX和CurrentY属性给出这些对象在绘图时的当前坐标。
这两个属性只能在程序中使用。
当坐标系确定后,常用这两个属性来指定一个坐标点,然后在这个点上输出内容。
当使用Cls方法后,CurrentX和CurrentY的值为坐标原点,不论这个坐标原点在对象中什么位置。
例10-2用Print方法在窗体上随机打印100个五角星“☆”。
代码如下:
PrivateSubForm_Click()
Fori=1To100
CurrentX=Form1.ScaleWidth*Rnd'
根据窗体的有效宽度取横坐标
CurrentY=Form1.ScaleHeight*Rnd'
根据窗体的有效高度取纵坐标
Print"
☆"
Forj=1To500000'
延时程序,循环次数可以自行调整
Nextj
Nexti
程序运行效果如图10-2所示。
10.2.2DrawWidth和DrawStyle
窗体、图片框或打印机的DrawWidth属性给出在这些对象上所画线条的宽度或点的大小,DrawStyle属性给出在这些对象上所画线条的线形。
DrawWidth以像素为单位,最小为1,默认值也为1。
DrawStyle属性设置及意义如表10-2。
表10-2DrawStyle属性设置
vbSolid
实线(缺省值)
vbDash
虚线
vbDot
点线
vbDashDot
点划线
vbDashDotDot
双点划线
vbInvisible
无线
vbInsideSolid
内收实线
注:
若DrawWidth属性设置为大于1,DrawStyle属性设置值为1到4会画一条实线。
若DrawWidth设置为1,DrawStyle产生的效果如前面表中的各设置值所述。
如果使用控件,则通过BorderWidth属性定义线的宽度或点的大小,通过BorderStyle属性定义线型。
10.2.3FillStyle和FillColor
封闭图形的填充方式由FillStyle和FillColor这两个属性决定。
FillColor指定填充图案的颜色,默认与ForeColor相同。
FillStyle指定填充的图案,共有8种,见表10-3。
表10-3FillStyle属性设置
vbFSSolid
实线
vbFSTransparent
透明(缺省值)
vbHorizontalLine
水平直线
vbVerticalLine
垂直直线
vbUpwardDiagonal
上斜对角线
vbDownwardDiagonal
下斜对角线
vbCross
十字线
vbDiagonalCross
交叉对角线
VB默认采用对象的前景色绘图,也可以通过以下颜色函数指定色彩。
1.Rgb函数
Rgb函数通过红、绿、蓝三基色混合产生某种颜色,其语法为:
Rgb(红,绿,蓝)
红、绿、蓝三基色的成份使用0~255之间的整数。
某种基色数值越大,这种颜色就越强。
如Rgb(255,0,0)就返回纯红色,而Rgb(255,255,255)返回白色,Rgb(0,0,0)返回黑色。
从理论上说,用Rgb函数可以产生255*255*255种颜色。
2.QBColor函数
QBColor函数采用QuickBasic所使用的16种颜色,其语法格式为:
QBColor(颜色码)
颜色码的取值范围及含义见表10-4。
表10-4颜色码与颜色对应表
值
颜色
黑色
8
灰色
兰色
9
亮兰色
绿色
10
亮绿色
青色
11
亮青色
红色
12
亮红色
洋红色
13
亮洋红色
黄色
14
亮黄色
白色
15
亮白色
10.2.4AutoRedraw
该属性对于使用各种图形方法很重要。
在窗体对象或图片框中,如果AutoRedraw属性值为True,则当对象调整大小或被其它对象遮盖后,原来所画的内容将被重新显示出来,反之,则不会显示出来。
AutoRedraw默认值为False。
当需要保存窗体对象或图片框上所绘制的图形时,其AutoRedraw属性值必须为True。
读者可以做一个简单的测试,在一个窗体上用Print方法输出一些内容,当AutoRedraw值为False时,将这个窗体最小化后再恢复,窗体上的内容全部不见了。
当AutoRedraw值置为True时,无论这个窗体的大小如何变化,只要恢复到原来大小,原有的内容会全部重新显示出来。
10.3图形控件
为了在应用程序中创作图形,VB提供了4个基本控件以简化与图形有关的操作。
它们是PictureBox、Image、Line和Shape。
每一个控件都适用于一个特定的目的。
图形控件的优点是可使用较少的代码创建图形。
例如在窗体上放置一个圆,既可用Circle方法,也可用Shape控件,但用后者只需在设计时简单地把它拖到窗体上并设置特定的属性就可以了。
PictureBox和Image控件可以显示位图、图标、图元文件中的图形。
也可处理GIF和JPEG格式的图像文件。
10.3.1PictureBox控件
PictureBox控件在前面章节作为其他控件的容器已经有了多次应用,该控件主要用来显示图片。
显示图片时,Picture属性设置为被显示的图片文件名(含路径名)。
在程序运行时可以使用LoadPicture()函数在图片框中装入图片。
PictureBox控件不提供滚动条,也不能伸展被装入的图片以适应控件尺寸,但可用PictureBox的AutoSize属性调整PictureBox的大小以适应图片尺寸。
当AutoSize设置为True时,PictureBox能自动调整大小与显示的图片匹配,当AutoSize设置为False时,PictureBox不能改变大小,当图片比控件大时,超过部分将被裁掉。
10.3.2Image控件
在窗体上使用Image控件的步骤与PictureBox相同,但前者比后者占用更少的内存,速度更快。
二者的区别是Image不能用作容器。
Image没有AutoSize属性,但有Stretch属性。
当Stretch设置为True时,加载的图片可自动调整大小以适应Image的大小(有可能失真);
当Stretch设置为False时,Image会自动改变大小以适应加载的图片。
10.3.3Line控件
Line控件可以用来画线。
其主要属性是BorderWidth和BorderStyle,分别控制画线的宽度和线型,运行时的主要属性是所画线条的两个端点坐标x1,y1和x2,y2,分别控制线条的起点和终点。
10.3.4Shape控件
Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角正方形。
当Shape控件放到窗体时显示为一个矩形,通过Shape属性可确定所需要的几何形状。
FillStyle属性为Shape指定填充图案,也可用FillColor属性为Shape着色。
10.3.5图形文件的保存
对于绘制或加载在窗体、Image和PictureBox内的图形,可以使用SavePicture命令把图形以文件的形式保存到磁盘中。
命令格式为:
SavePicture对象名.属性,“文件名”
(1)对象名特指窗体、Image和PictureBox名。
(2)属性指Picture或Image,对于绘制的图形,只能用Image属性。
(3)文件名指定保存的文件名,包括盘符和路径。
加载了Picture属性的对象,如果它是位图、图标、元文件或增强元文件,则图形将用和原始文件同样的格式保存;
如果是GIF或JPEG文件,则将其保存为位图文件。
而Image属性中的图形总是以位图的格式保存而不管其原始格式。
10.4图形方法
10.4.1Line方法
Line方法用于在指定对象上画直线或矩形,其语法格式如下:
对象.Line[Step](x1,y1)-[Step](x2,y2),[颜色],[B][F]
(1)对象指窗体或图片框,默认为当前窗体;
(2)(x1,y1)为线段的起点坐标或矩形的左上角坐标;
(3)(x2,y2)为线段的终点坐标或矩形的右下角坐标;
(4)[Step]表示从当前位置为原点的相对值;
(5)[B]表示画矩形;
(6)[F]如果使用了B选项,则F选项规定矩形以矩形边框的颜色填充。
不能只用F不用B。
如果不用F只用B,则矩形用当前的FillColor和FillStyle填充。
FillStyle的缺省值为Transparent。
例10-3用Line方法在窗体上画出一组随机直线,第一条线从窗体中心开始,终点随机产生,以后每一条线均从上一条线的终点开始,线条颜色也随机产生。
分析:
本题可以先确定坐标系统,将窗体中心定为原点,终点及线条颜色由随机函数产生。
为了看清楚产生过程,本题用计时器来定时画线。
单击窗体停止。
程序执行效果如图10-3,代码如下:
Timer1.Enabled=False
PrivateSubForm_Load()
Scale(100,100)-(0,0)'
设置坐标系统
DrawWidth=2'
设置线宽
Timer1.Interval=300'
设置时间间隔
Randomize
PrivateSubTimer1_Timer()
x=Int(100*Rnd)
y=Int(100*Rnd)
cc=Int(16*Rnd)
LineStep(0,0)-(x,y),QBColor(cc)
11.4.2Circle方法
Circle方法用于画圆、椭圆、圆弧和扇形,其语法格式如下:
对象.Circle[[Step](x,y),半径[,颜色][,起始角][,终止角][,横纵轴比率]]
(1)对象指窗体、图片框或打印机,默认为当前窗体;
(2)(x,y)指圆心坐标,若有Step选项则表示相对当前坐标;
(3)起始角、终止角圆弧和扇形通过起始角、终止角参数控制。
当起始角、终止角取值在0~2π时为圆弧,在起始角、终止角取值前加负号时,画出扇形,负号表示画圆心到圆弧的径向线;
(4)横纵轴比率椭圆通过横纵轴比率控制,默认值为1时,画出的是圆。
例10-4以下代码可分别画出圆、扇形、椭圆、及圆弧。
程序运行结果如图10-4所示。
确定坐标系统
Line(100,50)-(0,50)'
画一条线
Circle(80,50),5'
以(80,50)中圆心,5为半径画圆
Circle(60,50),10,RGB(255,0,0),-jtoh(30),-jtoh(90)
以(60,50)为中心,10为半径,起始角为30度,终止角为90度画红色扇形
Circle(40,50),10,,,,0.5
以(40,50)为中心,10为半径,颜色、起始角、终止角默认,长短半径比为0.5画椭圆
Circle(20,50),15,,jtoh(60),jtoh(150)'
jtoh为一个自定义函数
Functionjtoh(x)'
用于将角度换成弧度
jtoh=x*3.1415926/180
EndFunction
10.4.3Pset方法
Pset方法用于在窗体、图片框或打印机对象上指定的位置画点。
其语法格式如下:
对象.Pset[Step](x,y)[,颜色]
(x,y)表示画点的坐标位置,Step表示相对于当前坐标。
例10-5建立一个坐标系并绘制函数f(x)=sin(x)在(-360,360)之间的图形。
先定义坐标系,本例将坐标原点定义在一个PictureBox的中心,PictureBox的左上角为(-360,1),右下角坐标为(360,-1)。
画好后如图10-5所示,代码如下:
Picture1.AutoRedraw=True
Picture1.BackColor=RGB(255,255,255)
Picture1.Scale(-360,1)-(360,-1)
Picture1.Line(-360,0)-(360,0)
Picture1.Line(0,1)-(0,-1)
Fori=-10To10
Picture1.Line(0,i/10)-(10,i/10)
Fori=-360To360Step15
Picture1.Line(i,0)-(i,0.05)
Picture1.CurrentX=20
Picture1.CurrentY=-0.05
Picture1.Print"
(0,0)"
Fori=-360To360Step0.1
Picture1.PSet(i,Sin(i*3.1415926/180))
ans=MsgBox("
要以文件的形式保存图形吗?
"
vbYesNo)
Ifans=vbYesThen
SavePicturePicture1.Image,"
c:
\temp.bmp"
MsgBox"
请到C盘根目录下去找temp.bmp文件,看一下保存上了没有!
Else
可惜啊可惜,这么好的一个图形!
EndIf
10.4.4Point方法
Point方法用于返回窗体或图片框上指定点的Rgb颜色,其语法格式为:
对象.Point(x,y)
如果(x,y)所指定的点在对象之外,返回值为-1。
例10-6用Point方法获取一个区域的信息并用Pset方法画在另一个区域。
在一个窗体上画出两个图片框,Picture2的高和宽均是Picture1的二倍,但二者的坐标系统设置相同,先在Picture1中用Print输出几个字符,再将Picture1中各点颜色逐个取出,画到Picture2中。
那么在Picture2中得到的字符长宽均将是Picture1中字符长宽的二倍。
结果如图10-6所示,代码如下:
x=Picture1.Width
y=Picture1.Height
Picture2.Width=2*x
Picture2.Height=2*y
PrivateSubPicture2_Click()
Picture1.Scale(0,0)-(100,100)
Picture1.DrawWidth=1
Picture1.FontSize=12
大西北"
Picture2.Scale(0,0)-(100,100)
Picture2.DrawWidth=2
Fori=0To100
Forj=0To100
pc=Picture1.Point(i,j)
Ifpc<
>
-1ThenPicture2.PSet(i,j),pc
根据这个原理,读者可以将任何图片放大或缩小。
如果将Pset中的i和j,换成100-i和100-j,效果又会如何呢?
10.5PaintPicture方法
处理图像除了应用Pset方法和Point方法外,还可以使用PaintPicture方法,而且后者更加方便。
Windows提供了移动位图块的功能,VB通过PaintPicture方法可实现从一个窗体或图片框控件中向另一个对象复制一个矩形区域的像素。
PaintPicture方法的语法如下:
目标对象.PaintPicturepicture,x1,y1,width1,height1,x2,y2,width2,height2,opcode
(1)目标对象只能是窗体、图片框或打印机对象,默认为当前窗体;
(2)picture指要绘制的图形源,窗体或图片框必须是Picture属性;
(3)x1,y1指定在目标坐标(x轴和y轴)。
目标对象的ScaleMode属性决定使用的度量单位;
(4)Width1可选项,指示目标宽度。
如果目标宽度比源宽度(width2)大或小,将拉伸或压缩源块。
如果该参数省略,则使用源宽度;
(5)Height1可选项,指示目标高度。
如果目标高度比源高度(height2)大或小,将拉伸或压缩源块。
如果该参数省略,则使用源高度;
(6)x2,y2可选项,指示源图块起点坐标(x轴和y轴)。
缺省为0;
(7)Width2可选项,指示源块宽度,如果该参数省略,则使用整个源宽度;
(8)Height2可选项,指示源块高度,如果该参数省略,则使用整个源高度;
(9)Opcode它用来定义将源块绘制到目标对象上时对源块执行的位操作。
一般使用vbSrcCopy(&
H00cc0020)。
更多的选项请查阅MSDN。
借助于PaintPicture方法,可以将一个对象中位图进行复制、翻转、缩放、旋转到另一个对象中。
10.5.1位图的复制
如果要将图片框1(Picture1)中的位图按原大小复制到图片框2(Picture2)中,命令如下:
Picture2.PaintPicturePicture1.Picture,0,0
如果仅复制其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第10章 图形操作 10 图形 操作