第12章FORTRAN图形操作教学教案

上传人:yuzo****123 文档编号:141252536 上传时间:2020-08-05 格式:PPT 页数:23 大小:639KB
返回 下载 相关 举报
第12章FORTRAN图形操作教学教案_第1页
第1页 / 共23页
第12章FORTRAN图形操作教学教案_第2页
第2页 / 共23页
第12章FORTRAN图形操作教学教案_第3页
第3页 / 共23页
第12章FORTRAN图形操作教学教案_第4页
第4页 / 共23页
第12章FORTRAN图形操作教学教案_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《第12章FORTRAN图形操作教学教案》由会员分享,可在线阅读,更多相关《第12章FORTRAN图形操作教学教案(23页珍藏版)》请在金锄头文库上搜索。

1、第十二章 FORTRAN图形操作,绘图基础 QuickWin窗口的创建 图形坐标系 图形属性 基本图形函数 图形字符操作,一、QuickWin绘图基础,QuickWin支持以像素为基础的图形,其图形库包括了一套完整的图形函数集。 1QuickWin图形库 MSFLIB.F90:绘图子程序的定义及接口 MSFLIB.MOD:图形过程符号常量说明以及与绘图过程相关的结构体的定义 2. QuickWin应用程序的创建,二、QuickWin窗口的创建,设置图形模式 RESULT = SETWINDOWCONFIG(WC) RESULT为LOGICAL型变量,若调用成功,返回值为.TRUE.,否则为.F

2、ALSE.。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,QuickWin坐标系均为左手坐标系。默认为

3、像素坐标系,坐标值为整数,从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 轴与视口

4、Y轴相反,否则与视口坐标系相同。wx1、wy1、wx2、wy2均为双精度实型,(wx1, wy1)和(wx2, wy2)分别定义视窗的左下角和右上角,视窗原点由(wx1, wy1)和(wx2, wy2)的值所确定。设置了视窗坐标系,就不再需要进行数据转换工作,可调用绘图过程在子窗口中直接绘图。,四、图形属性,图形颜色 RGB的色值由3字节组成,每一字节取值范围为 0255,分别代表蓝、绿、红三色的颜色深度,各表示成2位16进制数字,从右往左依次为红、绿、蓝;数字越大,所对应的颜色强度越强。,1设置颜色 result = SETCOLORRGB (color) result = SETBKCOL

5、ORRGB (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

6、 = SETCOLORRGB(#0000FF) CALL MOVETO(20,20,XY) CALL OUTGTEXT(This is red) END,要使设置的背景色发生作用,须使用CLEARSCREEN函数清空目标区域,,线型 线型(LineStyle)是点、横线和空格等按一定规律重复出现而形成的图案,是构成直线条的基本图元。 CALL SETLINESTYLE (mask) mask是一个16位二进制数,其中每位对应线型图元的一个像素。若位值为零,则像素保持当前背景色;若位值为1,则像素被置为当前前景色。缺省线型模式是#FFFF(实线)。如表所示,#FF00表示长虚线型,#F0F0表示

7、短虚线型,缺省为实线(#FFFF)。,填充样式 填充样式(FillMask)是横线、竖线和斜线等按一定规律重复出现而形成的图案,是构成填充部分的基本图元。 CALL SETFILLMASK (mask) 其中mask为INTEGER(1)型的有8个元素的一维数组,数组元素中的每一位2进制代表填充元中的一个像素,值为1表示该像素点填充颜色,值为0表示该像素点不填充颜色;第n个数组元素对应填充元的第n行。如左表中所示的填充元为虚线,右表中所示的填充元为细实线。,五、基本图形函数,画像素点 result = SETPIXELRGB (x, y, color) result = SETPIXELRGB

8、_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=SETPIXELR

9、GB_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 MS

10、FLIB 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

11、(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)为视

12、口坐标系中椭圆外接矩形框左上角的坐标 (x2, y2)、( 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

13、SETFILLMASK(style) status = ELLIPSE( $GFILLINTERIOR, 280, 50, 380, 150 ) END,区域填充 使用当前图形色和填充样式填充一个由特定边界颜色定义的有界封闭区域 result =FLOODFILLRGB (x, y, color) result = FLOODFILLRGB_ W (wx, wy, color) 如果起点位于图形内部,则图形内部区域被填充;如果起点位于图形外部,则背景将被填充。,六、图形字符操作,1初始化字型 numfonts = INITIALIZEFONTS( ) 2设置字型 从已注册的字形集中确定一种字形

14、作为当前字形。 result = SETFONT( options ) 其中,result为INTEGER(2)型,如果函数执行成功,返回字型的索引号,否则返回负整数。当前字形特征(如字体、字符的高和宽等)由options指定,其取值及意义如表所示。,例: index = SETFONT(t Times New Roman h18wl0),以像素为单位,3设置文本显示角度 CALL SETGTEXTROTATION (degrees) 其中degrees为INTEGER(4)型,计量单位是十分之一度。 4输出字符 以图形方式将一个字符串文本输出到屏幕上 CALL OUTGTEXT(text)

15、其中,text为字符型,是将要被显示的字符串。输出的字符串在当前图形位置,使用当前字体(由SETFONT设定)和当前图形色(由SETCOLORRGB设定)显示。,USE MSFLIB TYPE(XYCOORD) xy INTEGER(4) tcolor INTEGER(2) status CHARACTER*8:tfont,ttype(3)*20 ttype=(/隶书, 楷体_GB2312, 华文彩云/) tcolor=#0000FF status = SETTEXTCOLORRGB(#FFFFFF) status = INITIALIZEFONTS() CALL MOVETO(50,100,

16、xy) DO i=1,3 WRITE(tfont,10) i*5+20,i*3+20 status = SETCOLORRGB(tcolor) status = SETFONT(t/TRIM(ttype(i)/tfont) CALL SETGTEXTROTATION (i*150) CALL OUTGTEXT(欢迎) tcolor = tcolor*#100 END DO 10 FORMAT(h,I2,w,I2,) END,综合实例,从顺序文件score.dat中读取某班某门课的成绩,统计各成绩段(60分以下,6069,7079,8089,90100)的分布情况,输出其饼图。要求在图中标注各块的意义。 分析: (1)用score数组存放成绩,用p数组存放各成绩段的人数(p(1) 存放90100的人数,p(5) 存放低于60分的人数)。 (2)过程PLOT_PIE绘制饼图。,USE MSFLIB INTEGER,ALLOCATABLE:score(:) INTEGER:p

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号