绘图、界面功能简介.doc

上传人:公**** 文档编号:551669455 上传时间:2023-04-02 格式:DOC 页数:11 大小:85.50KB
返回 下载 相关 举报
绘图、界面功能简介.doc_第1页
第1页 / 共11页
绘图、界面功能简介.doc_第2页
第2页 / 共11页
绘图、界面功能简介.doc_第3页
第3页 / 共11页
绘图、界面功能简介.doc_第4页
第4页 / 共11页
绘图、界面功能简介.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《绘图、界面功能简介.doc》由会员分享,可在线阅读,更多相关《绘图、界面功能简介.doc(11页珍藏版)》请在金锄头文库上搜索。

1、fortran绘图、界面功能简介Science Tools 2007-11-29 20:43:00 阅读78 评论0 字号:大中小订阅 -Fortran中文网 (http:/ (http:/ (http:/ 作者:lm_lxt- 发布时间:2006-12-29 9:17:11- 分享fortran绘图、界面功能简介对于fortran的绘图、界面功能,我仅仅做一个简单的罗列,这样方便大家的讨论: 1.利用fortran的扩充函数绘图,下面是一个简单的例子,是http:/ Visual Fortran中有提供绘图功能。Visual Fortran的绘图功能不完全是以扩充函数的类型存在,使用它的绘图

2、功能必须在选择Project类型时,选择Standard Graphics或QuickWin模式。Visual Fortran的QuickWin及Standard Graphics模式在简单的绘图使用上会比较方便,它的绘图函数功能比较多样,不过效率会比较差,而且不支持动画功能。 Standard Graphics和QuickWin模式在绘图方面的使用方法完全相同,它们都是调用相同的函数来绘图。差别在于Standard Graphics只能打开一个窗口来绘图、QuickWin模式则可以打开多个窗口来绘图。QuickWin模式下可以有菜单及对话窗的功能,Standard Graphics则不行。S

3、tandard Graphics模式的程序代码可以原封不动直接转换到QuickWin模式下使用,但是QuickWin的程序代码并不一定可以直接拿到Standard Graphics模式下使用。 下面这个程序会在屏幕上画出一条斜线、一个方形及一个椭圆。编译程序时,请选择Fortran Standard Graphics or QuickWin Application这个模式。这个程序可以在Standard Graphics或QuickWin模式下使用。打开好Project后,再把下面的程序加入Project中来编译。1.! 简单的绘图范例2.! By Perng 1997/9/193.progr

4、am Plot_Demo4.! 使用Visual Fortran的绘图功能时需要module dflib5.use DFLIB6.implicit none7. type(xycoord) : t8. integer : result9. call MoveTo(10,10,t) ! 把目前绘图的位置移动到坐标(10,10)10. result=LineTo(100,50) ! 从(10,10)到(100,50)间绘一条直线11. ! 画一个左上角为(110,10), 右下角为(150,50)的实心方形12. result=Rectangle( $GFILLINTERIOR, 110,10,

5、150, 50 )13. ! 画一个可以放入在(10,60)-(150,100)方形当中的空心椭圆14. result=Ellipse($GBORDER, 10, 60, 150, 100)15.end program Plot_Demo使用Standard Graphics模式时,会出现一个绘图窗口来画图。使用QuickWin模式时,除了绘图窗口外,还有内定的菜单可以使用。File菜单中的Print可以把图形显示出,Save可以把绘图结果储存成*.BMP图文件。 使用Visual Fortran的绘图功能时,打开窗口的工作是自动完成的。程序代码只需要直接调用绘图函数就可以进行绘图,下面对程序

6、中所使用的绘图函数做一些介绍:subroutine MoveTo(x,y,t)使用这个子程序时,要先把屏幕想像成一张画纸,程序会使用一只画笔在屏幕上画画。MoveTo(x,y,t)可以把这只画笔移动到画纸上的(x,y)坐标处,参数t则会返回移动之前的画笔所在位置(这个参数其实没有什么用,不过既然有规定就一定要把它放入)。请注意,原点(0,0)是位在窗口的左上角,x坐标轴向右为正,y坐标轴向下为正。integer(2) function LineTo(x,y)这个函数可以把画笔从目前的位置到(x,y)处画一条直线。返回值如果不为0,代表函数运行不正常。integer(2) function Re

7、ctangle( control, x1, y1, x2, y2 )这个函数可以在(x1,y1)、(x2,y2)两个端点间画出一个方形。control值可以用来设定是要画出一个实心方形或是只有外框而已。在范例中把control的值用$GFILLINTERIOR来代入,表示要画实心。$GFILLINTERIOR定义在MODULE DFLIB里面。integer(2) function Ellipse(control,x1,y1,x2,y2)这个函数会在(x1,y1)、(x2,y2)两端点间所形成的矩形中画椭圆。control的意义同上,在范例中使用$GBORDER,代表只画出外框。下面这个范例画

8、出SIN函数的图形: 1.! sin函数的绘图范例 2.program Plot_Sine 3. use DFLIB 4.implicit none 5. integer, parameter : lines=500 ! 用多少线段来画函数曲线 6. real(kind=8), parameter : X_Start=-5.0 ! x轴最小范围 7. real(kind=8), parameter : X_End=5.0 ! x轴最大范围 8. real(kind=8), parameter : Y_Top=2.0 ! y轴最大范围 9. real(kind=8), parameter : Y

9、_Bottom=-2.0 ! y轴最小范围10. integer : result ! 取回绘图函数运行状态11. integer(kind=2) : color ! 设定颜色用12. real(kind=8) : step ! 循环的增量13. real(kind=8) : x,y ! 绘图时使用,每条小线段都连接14. real(kind=8) : NewX,NewY ! (x,y)及(NewX,NewY)15. real(kind=8), external : f ! 待绘图的函数16. type(wxycoord) : wt ! 返回上一次的虚拟坐标位置17. type(xycoord

10、) : t ! 返回上一次的实际坐标位置18.19. ! 设定虚拟坐标范围大小20. result=SetWindow( .true. , X_Start, Y_Top, X_End, Y_Bottom )21. ! 用索引值的方法来设定颜色22. result=SetColor(2) ! 内定的2号是应该是绿色23. call MoveTo(10,20,t) ! 移动画笔到窗口的(10,20)24. call OutGText(f(x)=sin(x) ! 写出内容25. ! 使用全彩RGB 0-255的256种色阶来设定颜色26. color=RGBToInteger(255,0,0) !

11、把控制RGB的三个值转换到color中27. result=SetColorRGB(color) ! 利用color来设定颜色28.29. call MoveTo_W(X_Start,0.0_8,wt) ! 画X轴30. result=LineTo_W(X_End,0.0_8) !31. call MoveTo_W(0.0_8,Y_Top,wt) ! 画Y轴32. result=LineTo_W(0.0_8,Y_Bottom) !33.34. step=(X_End-X_Start)/lines ! 计算小线段间的X间距35. ! 参数#FF0000是使用16进制的方法来表示一个整数36. r

12、esult=SetColorRGB(#FF0000)37. ! 开始绘制小线段们38. do x=X_Start,X_End-step,step39. y=f(x) ! 线段的左端点40. NewX=x+step41. NewY=f(NewX) ! 线段的右端点42. call MoveTo_W(x,y,wt)43. result=LineTo_W(NewX,NewY)44. end do45. ! 设定程序结束后,窗口会继续保留46. result=SetExitQQ(QWIN$EXITPERSIST)47.end48.! 所要绘图的函数49.real(kind=8) function f(

13、x)50.implicit none51. real(kind=8) : x52. f=sin(x)53. return54.end function f这个程序会以目前Windows分辨率的大小来打开绘图窗口。程序执行后只能够看到窗口的一小部分,读者可以试着按下Alt+Enter来把窗口放大成全屏幕大小,不然看不到全部的图形。使用QuickWin模式时,并不像使用SGL时一样可以得到窗口大小改变的信息,所以QuickWin下的虚拟坐标是对固定分辨率来对应,不会随着窗口大小改变而缩放图形。把这个程序中新使用的绘图函数做一个介绍integer(2) function SetWindow( inv

14、ert, x1,y1, x2,y2 )用来设定虚拟坐标,invert的值是用来指定Y轴向上为正或为负。invert=.true.时向上为正,invert=.false.时向下为负。(x1,y1)、(x2,y2)则使用双精度浮点数来定义绘图范围两端的虚拟坐标值。integer(2) function SetColor(index)使用索引值的方法来设定所要使用的颜色。subroutine OutGText( text )调用这个子程序可以在目前画笔的位置上写出text字符串。integer(4) function RGBToInteger(R,G,B)前面有提过,全彩模式中,RGB三种色光可以各自有256种色阶变化,所以一个颜色需要使用3 bytes的空间来做记录。但是FORTRAN中通常一个整

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

当前位置:首页 > 生活休闲 > 社会民生

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