第12章FORTRAN图形操作

上传人:功*** 文档编号:252416512 上传时间:2024-11-15 格式:PPT 页数:24 大小:1.20MB
返回 下载 相关 举报
第12章FORTRAN图形操作_第1页
第1页 / 共24页
第12章FORTRAN图形操作_第2页
第2页 / 共24页
第12章FORTRAN图形操作_第3页
第3页 / 共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,指定,其
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!