资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
Add,标题,Add title,标题,Add title,标题,Add Title,标题,Add title,标题,*,第十二章,FORTRAN,图形操作,绘图基础,QuickWin,窗口的创建,图形坐标系,图形属性,基本图形函数,图形字符操作,一、,QuickWin,绘图基础,QuickWin,支持以像素为基础的图形,其图形库包括了一套完整的图形函数集。,1,QuickWin,图形库,MSFLIB.F90:,绘图子程序的定义及接口,MSFLIB.MOD:,图形过程符号常量说明以及与绘图过程相关的结构体的定义,2.,QuickWin,应用程序的创建,二、,QuickWin,窗口的创建,设置图形模式,RESULT=SETWINDOWCONFIG(WC),RESULT,为,LOGICAL,型变量,若调用成功,返回值为,.TRUE.,,否则为,.FALSE.,。,WC,为,WINDOWCONFIG,结构体类型变量。,TYPE WINDOWCONFIG,INTEGER(2)NUMXPIXELS!X,轴的像素个数,INTEGER(2)NUMYPIXELS!Y,轴的像素个数,INTEGER(2)NUMTEXTCOLS!,最大文本列数,INTEGER(2)NUMTEXTROWS!,最大文本行数,INTEGER(2)NUMCOLORS!,颜色索引数,INTEGER(4)FONTSIZE!,缺省的字体大小。,CHARACTER(80)TITLE!,窗口标题,END TYPE WINDOWCONFIG,2.,窗口操作,(1),打开子窗口,OPEN,(,UNIT=n,FILE=USER,TITLE=wname,IOFOCUS=status,),(2),激活窗口,result=SETACTIVEQQ(unit),(3),控制窗口的大小和位置,result=SETWSIZEQQ(unit,winfo),winfo,为结构体,QWINFO,类型。结构体,QWINFO,包含窗口的位置和大小信息,它在模块,MSFLIB.MOD,中的定义为:,TYPE QWINFO,INTEGER(2)TYPE !,窗口类型,INTEGER(2)X !,左上角的,X,轴坐标,INTEGER(2)Y !,左上角的,Y,轴坐标,INTEGER(2)H !,窗口的高度,INTEGER(2)W !,窗口的宽度,END TYPE QWINFO,QWIN$MIN,QWIN$MAX,QuickWin,坐标系均为左手坐标系。默认为像素坐标系,坐标值为整数,从,0,开始计数,故分辨率为,640480,的屏幕如下,:,三、,图形坐标系,将坐标原点设置在物理坐标点,(x,,,y),:,CALL SETVIEWORG(x,y,t),其中,(x,y),为新原点的物理坐标,,t,为,XYCOORD,结构体类型的变量。,TYPE xycoord,INTEGER(2)xcoord !x,坐标,INTEGER(2)ycoord !y,坐标,END TYPE xycoord,视窗坐标,:,实数坐标系,result=SETWINDOW(finvert,wx1,wy1,wx2,wy2),其中,,finvert,为逻辑量,其值为真,则视窗的,Y,轴与视口,Y,轴相反,否则与视口坐标系相同。,wx1,、,wy1,、,wx2,、,wy2,均为双精度实型,,(wx1,wy1),和,(wx2,wy2),分别定义视窗的左下角和右上角,视窗原点由,(wx1,wy1),和,(wx2,wy2),的值所确定。设置了视窗坐标系,就不再需要进行数据转换工作,可调用绘图过程在子窗口中直接绘图。,四、,图形属性,图形颜色,RGB,的色值,由,3,字节组成,,每一字节,取值范围为,0,255,,分别代表,蓝,、,绿,、,红三色的,颜色深度,各表示成,2,位,16,进制数字,从右往左依次为红、绿、蓝;数字越大,所对应的颜色强度越强。,1,设置颜色,result=SETCOLORRGB(color),result=SETBKCOLORRGB(color),result=SETTEXTCOLORRGB(color),color,为,Integer(4),型,一般用,16,进制表示颜色取值。,例,4,设置绘图窗口为白色,用,PRINT,语句输出兰色文字,用,OUTGTEXT,函数输出红色字符。,USE MSFLIB,INTEGER(4)RESULT,TYPE(XYCOORD)XY,RESULT=SETBKCOLORRGB(#FFFFFF),CALL CLEARSCREEN($GCLEARSCREEN),RESULT=SETTEXTCOLORRGB(#FF0000),PRINT*,This is blue,RESULT=SETCOLORRGB(#0000FF),CALL MOVETO(20,20,XY),CALL OUTGTEXT(This is red),END,要使设置的背景色发生作用,须使用,CLEARSCREEN,函数清空目标区域,,线型,线型(,LineStyle,)是点、横线和空格等按一定规律重复出现而形成的图案,是构成直线条的基本图元。,CALL SETLINESTYLE(mask),mask,是一个,16,位二进制数,其中每位对应线型图元的一个像素。若位值为零,则像素保持当前背景色;若位值为,1,,则像素被置为当前前景色。缺省线型模式是,#FFFF(,实线,),。如表所示,,#FF00,表示长虚线型,,#F0F0,表示短虚线型,缺省为实线(,#FFFF,)。,填充样式,填充样式(,FillMask,)是横线、竖线和斜线等按一定规律重复出现而形成的图案,是构成填充部分的基本图元。,CALL SETFILLMASK(mask),其中,mask,为,INTEGER(1),型的有,8,个元素的一维数组,数组元素中的每一位,2,进制代表填充元中的一个像素,值为,1,表示该像素点填充颜色,值为,0,表示该像素点不填充颜色;第,n,个数组元素对应填充元的第,n,行。如左表中所示的填充元为虚线,右表中所示的填充元为细实线。,位,元,素,7,6,5,4,3,2,1,0,值,(十六进制),mask,(,1,),0,0,0,0,1,0,0,0,#08,mask,(2),0,0,0,0,1,0,0,0,#08,mask,(3),0,0,0,0,1,0,0,0,#08,mask,(4),0,0,0,0,1,0,0,0,#08,mask,(5),0,0,0,0,1,0,0,0,#08,mask,(6),0,0,0,0,1,0,0,0,#08,mask,(7),0,0,0,0,1,0,0,0,#08,mask,(8),0,0,0,0,1,0,0,0,#08,7,6,5,4,3,2,1,0,值,(十六进制),mask,(,1,),0,0,0,1,1,0,0,0,#18,mask,(2),0,0,0,1,1,0,0,0,#18,mask,(3),0,0,0,0,0,0,0,0,#00,mask,(4),0,0,0,1,1,0,0,0,#18,mask,(5),0,0,0,1,1,0,0,0,#18,mask,(6),0,0,0,0,0,0,0,0,#00,mask,(7),0,0,0,1,1,0,0,0,#18,mask,(8),0,0,0,1,1,0,0,0,#18,位,元,素,五、,基本图形函数,画像素点,result=SETPIXELRGB(x,y,color),result=SETPIXELRGB,_,W(wx,wy,color),其,中,(x,y),为,INTEGER(2),型,,为,视口坐标系中目标像素的坐标,;,(wx.wy),为,REAL(8),型,为视窗坐标系中目标像素的坐标。,例,12.5,绘制曲线 。,USE MSFLIB,REAL(8)x,y,PARAMETER(pi=3.141593),INTEGER(2)status,REAL(8):DZ=4.5,XJG=0.001D0,CALL SETVIEWPORT(49,49,800-50,600-50),DO x=0,DZ,XJG!,画函数曲线,y=sin(x)*3,status=SETPIXELRGB_W(x,y,#FFFFFF),END DO,END,设置绘图起点,CALL MOVETO(x,y,xy),CALL MOVETO_W(wx,wy,wxy),wx,、,wy,均为,REAL(8),型,其意义为目标点的视窗坐标;,wxy,为结构体,WXYCOORD,型的变量,结构体,WXYCOORD,类型在,MSFLIB.MOD,中定义如下:,TYPE wxycoord,REAL(8)wx !x,坐标,REAL(8)wy !y,坐标,END TYPE wxycoord,绘制形状,绘制直线,result=LINETO(x,,,y),result=LINETO_ W(wx,,,wy),USE MSFLIB,INTEGER(2)status,TYPE(xycoord)xy,status=SETCOLORRGB(#FFFFFF),CALL MOVETO(INT2(80),INT2(50),xy),status=LINETO(INT2(240),INT2(150),CALL SETLINESTYLE(#FF00),status=LINETO(INT2(240),INT2(50),READ(*,*)!,按回车键结束程序,END,绘制矩形,result=RECTANGLE(control,xl,yl,x2,y2),result=RECTANGLE_W(control,wxl,wyl,wx2,wy2),说明:,(,1,),result,为,INTEGER(2),型。如果绘图成功,则返回值不为零;否则返回值为零。,(,2,),control,为填充标志符,为,INTEGER(2),型,其值只有两个,即:,$GBORER,表示用当前图形色和当前线型绘制矩形框。,$GFILLNTEROR,表示用当前图形色和当前填充样式绘制矩形。,绘制椭圆,result=ELLIPSE(control,xl,yl,x2,y2),result=ELLIPSE_W(control,wxl,wyl,wx2,wy2),(,xl,yl,),、,(,wxl,wyl,),为,视口坐标系中椭圆外接矩形框左上角的,坐,标,(,x,2,y,2),、,(,wx2,wy2),为视口坐标系中椭圆外接矩形框右下角的坐标,使外接矩形为正方形即可画圆。,USE MSFLIB,INTEGER(2)status,INTEGER(1):style(8)/#01,#02,#04,#08,#10,#20,#40,#80/!,右斜线,!,绘制红色空心椭圆,status=SETCOLORRGB(#0000FF),status=ELLIPSE($GBORDER,80,50,240,150),!,绘制白色填充斜线圆,status=SETCOLORRGB(#FFFFFF),CALL SETFILLMASK(style),status=ELLIPSE($GFILLINTERIOR,280,50,380,150),END,区域填充,使用当前图形色和填充样式填充一个由特定边界颜色定义的有界封闭区域,result=FL,OODFILL,RGB(x,y,color),result=FLOODFILLRGB_ W(wx,wy,color),如果起点位于图形内部,则图形内部区域被填充;如果起点位于图形外部,则背景将被填充。,六、,图形字符操作,1,初始化字型,numfonts=INITIALIZEFONTS(),2,设置字型,从已注册的字形集中确定一种字形作为当前字形。,result,=SETFONT(,options,),其中,,result,为,INTEGER(2),型,如果函数执行成功,返回字型的索引号,否则返回负整数。当前字形特征(如字体、字符的高和宽等)由,options,指定,其
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6