FORTRAN图形操作.ppt

上传人:max****ui 文档编号:6345787 上传时间:2020-02-23 格式:PPT 页数:24 大小:1.02MB
返回 下载 相关 举报
FORTRAN图形操作.ppt_第1页
第1页 / 共24页
FORTRAN图形操作.ppt_第2页
第2页 / 共24页
FORTRAN图形操作.ppt_第3页
第3页 / 共24页
点击查看更多>>
资源描述
第十二章FORTRAN图形操作 绘图基础QuickWin窗口的创建图形坐标系图形属性基本图形函数图形字符操作 一 QuickWin绘图基础 QuickWin支持以像素为基础的图形 其图形库包括了一套完整的图形函数集 1 QuickWin图形库MSFLIB F90 绘图子程序的定义及接口MSFLIB MOD 图形过程符号常量说明以及与绘图过程相关的结构体的定义2 QuickWin应用程序的创建 二 QuickWin窗口的创建 设置图形模式RESULT SETWINDOWCONFIG WC RESULT为LOGICAL型变量 若调用成功 返回值为 TRUE 否则为 FALSE WC为WINDOWCONFIG结构体类型变量 TYPEWINDOWCONFIGINTEGER 2 NUMXPIXELS X轴的像素个数INTEGER 2 NUMYPIXELS Y轴的像素个数INTEGER 2 NUMTEXTCOLS 最大文本列数INTEGER 2 NUMTEXTROWS 最大文本行数INTEGER 2 NUMCOLORS 颜色索引数INTEGER 4 FONTSIZE 缺省的字体大小 CHARACTER 80 TITLE 窗口标题 ENDTYPEWINDOWCONFIG 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中的定义为 TYPEQWINFOINTEGER 2 TYPE 窗口类型INTEGER 2 X 左上角的X轴坐标INTEGER 2 Y 左上角的Y轴坐标INTEGER 2 H 窗口的高度INTEGER 2 W 窗口的宽度ENDTYPEQWINFO QWIN MINQWIN MAX QuickWin坐标系均为左手坐标系 默认为像素坐标系 坐标值为整数 从0开始计数 故分辨率为640 480的屏幕如下 三 图形坐标系 将坐标原点设置在物理坐标点 x y CALLSETVIEWORG x y t 其中 x y 为新原点的物理坐标 t为XYCOORD结构体类型的变量 TYPExycoordINTEGER 2 xcoord x坐标INTEGER 2 ycoord y坐标ENDTYPExycoord 视窗坐标 实数坐标系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函数输出红色字符 USEMSFLIBINTEGER 4 RESULTTYPE XYCOORD XYRESULT SETBKCOLORRGB FFFFFF CALLCLEARSCREEN GCLEARSCREEN RESULT SETTEXTCOLORRGB FF0000 PRINT Thisisblue RESULT SETCOLORRGB 0000FF CALLMOVETO 20 20 XY CALLOUTGTEXT Thisisred END 要使设置的背景色发生作用 须使用CLEARSCREEN函数清空目标区域 线型线型 LineStyle 是点 横线和空格等按一定规律重复出现而形成的图案 是构成直线条的基本图元 CALLSETLINESTYLE mask mask是一个16位二进制数 其中每位对应线型图元的一个像素 若位值为零 则像素保持当前背景色 若位值为1 则像素被置为当前前景色 缺省线型模式是 FFFF 实线 如表所示 FF00表示长虚线型 F0F0表示短虚线型 缺省为实线 FFFF 填充样式填充样式 FillMask 是横线 竖线和斜线等按一定规律重复出现而形成的图案 是构成填充部分的基本图元 CALLSETFILLMASK mask 其中mask为INTEGER 1 型的有8个元素的一维数组 数组元素中的每一位2进制代表填充元中的一个像素 值为1表示该像素点填充颜色 值为0表示该像素点不填充颜色 第n个数组元素对应填充元的第n行 如左表中所示的填充元为虚线 右表中所示的填充元为细实线 五 基本图形函数 画像素点result SETPIXELRGB x y color result SETPIXELRGB W wx wy color 其中 x y 为INTEGER 2 型 为视口坐标系中目标像素的坐标 wx wy 为REAL 8 型 为视窗坐标系中目标像素的坐标 例12 5绘制曲线 USEMSFLIBREAL 8 x yPARAMETER pi 3 141593 INTEGER 2 statusREAL 8 DZ 4 5 XJG 0 001D0CALLSETVIEWPORT 49 49 800 50 600 50 DOx 0 DZ XJG 画函数曲线y sin x 3status SETPIXELRGB W x y FFFFFF ENDDOEND 设置绘图起点CALLMOVETO x y xy CALLMOVETO W wx wy wxy wx wy均为REAL 8 型 其意义为目标点的视窗坐标 wxy为结构体WXYCOORD型的变量 结构体WXYCOORD类型在MSFLIB MOD中定义如下 TYPEwxycoordREAL 8 wx x坐标REAL 8 wy y坐标ENDTYPEwxycoord 绘制形状绘制直线result LINETO x y result LINETO W wx wy USEMSFLIBINTEGER 2 statusTYPE xycoord xystatus SETCOLORRGB FFFFFF CALLMOVETO INT2 80 INT2 50 xy status LINETO INT2 240 INT2 150 CALLSETLINESTYLE 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 为视口坐标系中椭圆外接矩形框左上角的坐标 x2 y2 wx2 wy2 为视口坐标系中椭圆外接矩形框右下角的坐标使外接矩形为正方形即可画圆 USEMSFLIBINTEGER 2 statusINTEGER 1 style 8 01 02 04 08 10 20 40 80 右斜线 绘制红色空心椭圆status SETCOLORRGB 0000FF status ELLIPSE GBORDER 80 50 240 150 绘制白色填充斜线圆status SETCOLORRGB FFFFFF CALLSETFILLMASK style status ELLIPSE GFILLINTERIOR 280 50 380 150 END 区域填充使用当前图形色和填充样式填充一个由特定边界颜色定义的有界封闭区域result FLOODFILLRGB x y color result FLOODFILLRGB W wx wy color 如果起点位于图形内部 则图形内部区域被填充 如果起点位于图形外部 则背景将被填充 六 图形字符操作 1 初始化字型numfonts INITIALIZEFONTS 2 设置字型从已注册的字形集中确定一种字形作为当前字形 result SETFONT options 其中 result为INTEGER 2 型 如果函数执行成功 返回字型的索引号 否则返回负整数 当前字形特征 如字体 字符的高和宽等 由options指定 其取值及意义如表所示 例 index SETFONT t TimesNewRoman h18wl0 以像素为单位 3 设置文本显示角度CALLSETGTEXTROTATION degrees 其中degrees为INTEGER 4 型 计量单位是十分之一度 4 输出字符以图形方式将一个字符串文本输出到屏幕上CALLOUTGTEXT text 其中 text为字符型 是将要被显示的字符串 输出的字符串在当前图形位置 使用当前字体 由SETFONT设定 和当前图形色 由SETCOLORRGB设定 显示 USEMSFLIBTYPE XYCOORD xyINTEGER 4 tcolorINTEGER 2 statusCHARACTER 8 tfont ttype 3 20ttype 隶书 楷体 GB2312 华文彩云 tcolor 0000FFstatus SETTEXTCOLORRGB FFFFFF status INITIALIZEFONTS CALLMOVETO 50 100 xy DOi 1 3WRITE tfont 10 i 5 20 i 3 20status SETCOLORRGB tcolor status SETFONT t TRIM ttype i tfont CALLSETGTEXTROTATION i 150 CALLOUTGTEXT 欢迎 tcolor tcolor 100ENDDO10FORMAT h I2 w I2 END 综合实例 从顺序文件score dat中读取某班某门课的成绩 统计各成绩段 60分以下 60 69 70 79 80 89 90 100 的分布情况 输出其饼图 要求在图中标注各块的意义 分析 1 用score数组存放成绩 用p数组存放各成绩段的人数 p 1 存放90 100的人数 p 5 存放低于60分的人数 2 过程PLOT PIE绘制饼图 USEMSFLIBINTEGER ALLOCATABLE score INTEGER p 5 0CHARACTER 10str 5 str 90分以上 80 89分 70 79分 60 69分 60分以下 OPEN 10 FILE score dat n 0DOWHILE NOT EOF 10 READ 10 n n 1ENDDOREWIND 10 ALLOCATE score n DOi 1 nREAD 10 score i ENDDO DOi 1 nIF score i 60 THENp 5 p 5 1ELSEIF score i 100 THENp 1 p 1 1ELSEp 10 score i 10 p 10 score i 10 1ENDIFENDDOCALLPLOT PIE p n 5 str END SUBROUTINEPLOT PIE p n k str USEMSFLIBINTEGERstatus p k CHARACTER 10str n REAL 8 x1 y1 x2 y2 x3 y3 x4 y4 x yINTEGER 4 bcolor 1 tcolorPARAMETER pi 3 141593 TYPE WXYCOORD tstatus SETWINDOW TRUE 1 2 1 2 1 2 1 2 设置视窗大小status SETBKCOLORRGB FFFFFF CALLCLEARSCREEN GCLEARSCREEN status INITIALIZEFONTS status SETFONT h32p x1 1 y1 1x2 1 y2 1x3 1 y3 0per 0 DOi 1 k 计算扇形大小per per 2 pi p i nx4 cos per y4 sin per bcolor bcolor 2Fstatus SETCOLORRGB bcolor status PIE W GFILLINTERIOR x1 y1 x2 y2 x3 y3 x4 y4 x3 x4 y3 y4 显示数据标签tcolor 1000000 bcolorstatus SETCOLORRGB tcolor tper per pi p i nx cos tper 0 7 y sin tper 0 7CALLMOVETO W x y t CALLOUTGTEXT str i ENDDOEND
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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