当前位置:文档之家› 第12章 FORTRAN图形操作

第12章 FORTRAN图形操作


•视窗坐标 :实数坐标系 result = SETWINDOW (finvert, wx1, wy1, wx2, wy2) 其中,finvert为逻辑量,其值为真,则视窗的Y 轴与视口Y轴 相反,否则与视口坐标系相同。wx1、wy1、wx2、wy2均为 双精度实型,(wx1, wy1)和(wx2, wy2)分别定义视窗的左下角 和右上角,视窗原点由(wx1, wy1)和(wx2, wy2)的值所确定。 设置了视窗坐标系,就不再需要进行数据转换工作,可调用 绘图过程在子窗口中直接绘图。
其中(x, y) 为INTEGER(2)型,为视口坐标系中目标像素的坐标;(wx. wy) 为 REAL(8) 型,为视窗坐标系中目标像素的坐标。 3 例12.5 绘制曲线 y sin x 。
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
mask (1) mask (2) mask (3) mask (4) mask (5) mask (6) mask (7)
#08
#08 #08 #08 #08 #08 #08
五、基本图形函数
•画像素点 result = SETPIXELRGB (x, y, color) result = SETPIXELRGB_W (wx,wy, color)
三、图形坐标系
QuickWin坐标系均为左手坐标系。默认为像素坐标系,坐标值 为整数,从0开始计数,故分辨率为640×480的屏幕如下:
将坐标原点设置在物理坐标点(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 = 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
六、图形字符操作
1.初始化字型 numfonts = INITIALIZEFONTS( ) 2.设置字型 从已注册的字形集中确定一种字形作 为当前字形。 result = SETFONT( options ) 其中,result为INTEGER(2)型,如果 函数执行成功,返回字型的索引号, 否则返回负整数。当前字形特征(如 字体、字符的高和宽等)由options指 定,其取值及意义如表所示。 取值 ‘t’ ‘fontnam e’ hx wy f p e 意义
•填充样式
填充样式(FillMask)是横线、竖线和斜线等按一定规律重复出现而形 成的图案,是构成填充部分的基本图元。
CALL SETFILLMASK (mask)
其中mask为INTEGER(1)型的有8个元素的一维数组,数组元素中的每 一位2进制代表填充元中的一个像素,值为1表示该像素点填充颜色,值 为0表示该像素点不填充颜色;第n个数组元素对应填充元的第n行。如 左表中所示的填充元为虚线,右表中所示的填充元为细实线。
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中的定义为: • QWIN$MIN TYPE QWINFO • INTEGER(2) TYPE ! 窗口类型 QWIN$MAX INTEGER(2) X ! 左上角的X轴坐标 INTEGER(2) Y ! 左上角的Y轴坐标 INTEGER(2) H ! 窗口的高度 INTEGER(2) W ! 窗口的宽度 END TYPE QWINFO
位 元 素 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 值 (十六进制) #18 #18 #00 #18 #18 #00 #18 #18 mask (8) 0 0 0 0 1 0 0 0 #08
• 区域填充 使用当前图形色和填充样式填充一个由特定边界颜色定义 的有界封闭区域 result =FLOODFILLRGB (x, y, color)
result = FLOODFILLRGB_ W (wx, wy, color) 如果起点位于图形内部,则图形内部区域被填充;如果起 点位于图形外部,则背景将被填充。
7
6
5
4
3
21Leabharlann 0位 元 素7 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
3 1 1 1 1 1 1 1
2 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
值 (十六进制)
mask (1) mask (2) mask (3) mask (4) mask (5) mask (6) mask (7) mask (8)
第十二章 FORTRAN图形操作
绘图基础 QuickWin窗口的创建 图形坐标系 图形属性 基本图形函数 图形字符操作
一、QuickWin绘图基础
QuickWin支持以像素为基础的图形,其图形库包括了一 套完整的图形函数集。 1.QuickWin图形库 • MSFLIB.F90:绘图子程序的定义及接口 • MSFLIB.MOD:图形过程符号常量说明以及与绘图过程 相关的结构体的定义 2. QuickWin应用程序的创建
例4 设置绘图窗口为白色,用PRINT语句输出兰色文字,用OUTGTE XT函数输出红色字符。 USE MSFLIB INTEGER(4) RESULT TYPE(XYCOORD) XY RESULT = SETBKCOLORRGB(#FFFFFF) 要使设置的背景色发生作用, 须使用CLEARSCREEN函数 CALL CLEARSCREEN ($GCLEARSCREEN) RESULT = SETTEXTCOLORRGB(#FF0000) 清空目标区域, PRINT *, "This is blue" RESULT = SETCOLORRGB(#0000FF) CALL MOVETO(20,20,XY) CALL OUTGTEXT("This is red") END
•线型 线型(LineStyle)是点、横线和空格等按一定规律重复出现而形成的图 案,是构成直线条的基本图元。 CALL SETLINESTYLE (mask) mask是一个16位二进制数,其中每位对应线型图元的一个像素。若位值 为零,则像素保持当前背景色;若位值为1,则像素被置为当前前景色。 缺省线型模式是#FFFF(实线)。如表所示,#FF00表示长虚线型,#F0F 0表示短虚线型,缺省为实线(#FFFF)。
位 mask # FF00 # F0F0 # FFFF 15 1 1 1 14 1 1 1 13 1 1 1 12 1 1 1 11 1 0 1 10 1 0 1 9 1 0 1 8 1 0 1 7 0 1 1 6 0 1 1 5 0 1 1 4 0 1 1 3 0 0 1 2 0 0 1 1 0 0 1 0 0 0 1
• 绘制矩形
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)为视口坐标系中椭圆外接矩形框右下角的坐标 使外接矩形为正方形即可画圆。
二、QuickWin窗口的创建
1.设置图形模式
RESULT = SETWINDOWCONFIG(WC)
RESULT为LOGICAL型变量,若调用成功,返回值为.TRUE.,否则为.FALSE.。WC为WIN DOWCONFIG结构体类型变量。 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
相关主题