您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Visual-Basic-清华大学vb编程语言基础-第13讲
第十三讲图形操作内容提要图形基础绘图属性图形控件图形方法图形应用坐标系VB中每个对象定位于存放它的容器每个容器都有一个坐标系构成一个坐标系的三要素:坐标原点、坐标度量单位、坐标轴的长度与方向坐标度量单位由容器对象的ScaleMode属性决定,缺省值为Twip0:自定义1:Twip2:Point3:Pixel4:字符5:英寸6:毫米7:厘米原点HeightScaleHeight(ScaleLeft,ScaleTop)自定义坐标系•ScaleLeft:确定对象左边的水平坐标•ScaleTop:确定对象顶端的垂直坐标•ScaleWidth:确定对象内部水平的单元数目•ScaleHeight:确定对象内部垂直的单元数目ScaleLeft=-50ScaleTop=50ScaleWidth=100ScaleHeight=-100使用ScaleTop、ScaleLeft、ScaleWidth和ScaleHeight属性实现使用Scale方法设置坐标系Scale方法不带参数时,取消用户定义的坐标系,采用缺省坐标系。(xLeft,yTop)(xRight,yBotton)自定义坐标系[对象.]Scale[(xLeft,yTop)-(xRight,yBotton)](0,0)Form1.Scale(-200,250)-(300,-150)同一图形层内控件对象排列顺序称为Z序列Zorder方法的语法为:图形层对象.Zorder[position]•position=0:该控件被定位于Z序列的前面•position=1:表示该控件被定位于Z序列的后面三个图形层放置的对象层次对象类型最上层工具箱中除标签、线条、形状外的控件对象中间层工具箱中标签、线条、形状控件对象最下层由图形方法所绘制的图形绘图属性CurrentX、CurrentY属性窗体、图形框或打印机在绘图时的当前横坐标和纵坐标(x,y):绝对坐标Step(x,y):相对坐标DrawMode属性决定用什么逻辑关系将一个图案画到另一个图案上绘图属性DrawWidth属性决定线条的粗细BackColor、ForeColor属性决定对象的背景色和前景色FillStyle属性决定填充在Shape控件或用Circle、Line方法建立的图形中的模式颜色的表示使用RGB函数使用QBColor函数RGB(Red,Green,Blue)决定16种颜色,QBColor(0)~QBColor(15)RGB(255,0,255)颜色的表示&HBBGGRR直接输入数值&HFF0000~RGB(0,0,255)使用VB颜色常数图形控件Shape控件可以在窗体上画矩形,通过属性设置可以画出圆、椭圆和圆角矩形•Shape属性•BorderStyle属性图形控件•BorderWidth、BorderColor属性•BackStyle和BackColor属性•FillColor属性图形控件Line控件可以在窗体、图片框和框架中画线段•BorderStyle属性•BorderWidth属性•BorderColor属性图形控件PictureBox控件用来显示图片,作为容器控件,显示图形方法输出的图形或Print方法输出的文本•Picture属性:被显示图片的路径文件名•AutoSize属性:设置为True时,PictureBox控件自动调整大小与显示的图片匹配图形控件Image控件用来显示图片,比图形框占用更少的内存•Picture属性:被显示图片的路径文件名•Stretch属性:设置为True时,自动调整图片大小以适应Image控件的大小,设置为False时,图像框自动改变大小以适应其中的图形图形文件的装入与保存设计阶段装入•使用Picture属性•利用剪贴板运行期间装入•LoadPicture函数•装在一个图片框的图形可以拷贝到另一图片框中LoadPicture(“图形文件路径文件名”)Picture2.Picture=Picture1.PictureCtrl+V图形文件的装入与保存删除图形使用LoadPicture函数,用空图形覆盖原有的图形Picture1.Picture=LoadPicture()保存图形使用SavePicture语句SavePicture对象名.属性,路径文件名SavePictureImage1.Picture,c:\a.bmp绘图方法Line方法在对象的两点之间画直线或矩形[对象.]Line[[Step](x1,y1)]-[Step](x2,y2)[,颜色][,B[F]]•省略参数B和F,是画直线•省略起点坐标,则以当前作图位置为起点,即以(CurrentX,CurrentY)为起点•起点作标前面有Step,表示该坐标是相对于当前作图位置的偏移量,如果在第二对坐标前面有Step,表示第二对坐标是相对于第一个坐标的偏移量绘图方法Line(100,100)-(800,800),RGB(255,0,0)LineStep(300,300)-Step(900,900),RGB(0,0,255)Line(800,500)-(2000,500)Line(3000,800)-Step(-700,700),RGB(255,255,0)Line-(900,900),RGB(255,0,255)Line(100,100)-Step(1000,800),vbRed,BLine(1500,100)-Step(1000,800),vbRed,BFLine(3000,100)-Step(1000,800),,BLine(4500,100)-Step(1000,800),,BF绘图方法Pset方法在对象的指定位置(x,y),按确定的颜色画点[对象.]Pset[Step](x,y)[,颜色]•对象指窗体或图片框•Step:当前作图位置的相对值Dimx!,y!,i!Scale(-15,15)-(15,-15)Line(0,14)-(0,-14)Line(14.5,0)-(-14.5,0)Fori=0To12Step0.01y=i*Sin(i)x=i*Cos(i)PSet(x,y)Nexti绘图方法Circle方法在对象中画圆、椭圆或弧•画圆[对象].Circle[Step](x,y),半径[,颜色]Dimi%CurrentX=100CurrentY=200Fori=1To7CircleStep(300,200),300NextiDimpw!,ph!Picture1.FillStyle=0Picture1.FillColor=QBColor(Int(Rnd*15))pw=Picture1.ScaleWidthph=Picture1.ScaleHeightPicture1.Circle(Int(Rnd*pw),Int(Rnd*ph)),250绘图方法•画椭圆[对象].Circle[Step](x,y),半径[,颜色],,,纵横比‣纵横比用来决定椭圆的形状‣纵横比1,半径指Y轴半径;纵横比1,半径指X轴半径Dimaspect%,x%,y%FillStyle=0FillColor=RGB(255,0,0)x=800:y=500Circle(x,y),300aspect=3FillStyle=1Circle(x*2,y),500,,,,aspectCircle(x*3,y),500,,,,aspectCircle(x*4,y),500,,,,aspect/2Circle(x,y),500,,,,aspect/6Circle(x*2,y),500,,,,aspect/9Circle(x*3,y),500,,,,aspect/15绘图方法•画弧[对象].Circle[Step](x,y),半径[,颜色][起始角,终止角][,纵横比]‣按逆时针方向画弧‣角度用弧度ConstPI=3.14159DrawWidth=2Circle(700,700),500,vbRed,PI/2,3*PI/2Circle(2000,700),500,vbBlue,PI/2,0Circle(3000,700),500,RGB(255,0,255),0,PI/2Circle(700,2000),500,vbGreen,-PI/2,-3*PI/2Circle(2000,2000),500,RGB(255,255,0),-0.2*PI,-1.8*PICircle(2000,3000),500,,-1.2*PI,-0.8*PI绘图方法Cls方法清除窗体或图形框控件中由图形方法和打印语句在运行时生成的图形和文本[对象].Cls•调用Cls方法后,对象的CurrentX、CurrentY属性复位为0•调用Cls方法前,如果AutoReDraw属性设置为False,则Cls方法不能清除在True时产生的图形和文本;如果调用Cls方法前AutoReDraw属性设置为True,则Cls方法能清除运行时产生的所有图形和文本绘图方法Point方法获取窗体或图片框中指定点的颜色值对象.Point(x,y)•实现位图旋转的效果‣Point方法从源图画框中提取一个像素点的颜色值‣Pset方法按照旋转后的坐标和相应像素点的颜色值在目标图中画点‣适用于较小的图片Point方法-例PrivateSubCommand1_Click()DimxAsInteger,yAsIntegerDimX1AsInteger,Y1AsIntegerDimX2AsDouble,Y2AsDoubleDimX3AsDouble,Y3AsDoubleDimJiaoDuAsDoubleDimHuDuAsDoubleJiaoDu=45'角度HuDu=JiaoDu*Pi/180'弧度PicSource.ScaleMode=vbPixelsPicTarget.ScaleMode=vbPixelsConstPi=3.14Point方法-例Forx=0ToPicTarget.ScaleWidthX1=x-PicTarget.ScaleWidth\2Fory=0ToPicTarget.ScaleHeightY1=y-PicTarget.ScaleHeight\2X2=X1*Cos(-HuDu)+Y1*Sin(-HuDu)Y2=Y1*Cos(-HuDu)-X1*Sin(-HuDu)X3=X2+PicSource.ScaleWidth\2Y3=Y2+PicSource.ScaleHeight\2IfX30AndX3PicSource.ScaleWidth-1AndY30AndY3PicSource.ScaleHeight-1ThenPicTarget.PSet(x,y),PicSource.Point(X3,Y3)EndIfNextyNextxEndSub绘图方法-例1金刚石图案方法:将半径为r的圆周等分,并将所有等分点用直线连接。ConstPI=3.1415926PrivateSubForm_Load()RandomizeEndSubPrivateSubCommand1_Click()Me.BackColor=vbWhiteMe.ForeColor=RGB(Rnd*255,Rnd*255,Rnd*255)Cls绘图方法-例1Dimn%,x0%,y0%,r%n=20'角的个数x0=ScaleWidth/2y0=ScaleHeight/2r=y0*0.9Dimpx()AsDouble,py()AsDoubleReDimpx(n),py(n)Dimi%,j%Fori=1Tonpx(i)=x0+r*Cos(i*2*PI/n)py(i)=y0+r*Sin(i*2*PI/n)NextiFori=1TonForj=1Toi-1Line(px(i),py(i))-(px(j),py(j))NextjNextiEndSub绘图方法-例2摆线xr(tsint)yr(tcost)Cayley树完全自相似的二叉树图形滚动浏览当图形尺寸大于窗体时,窗体不能显示图形的全部,
本文标题:Visual-Basic-清华大学vb编程语言基础-第13讲
链接地址:https://www.777doc.com/doc-3661921 .html