资源描述:
《fortran绘图.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Fortran95程序设计彭国伦编著第11章绘图11-1VisualFortran的绘图功能绘图功能是VisualFortran在FORTRAN标准外所扩充的功能。使用VisualFortran的绘图功能时需要moduledflib。编译带有VisualFortran的绘图功能的程序时,需要选择FortranStandardGraphicsorQuickWinApplication模式。使用StandardGraphics模式时,会出现一个绘图窗口来画图。使用QuickWin模式时,除了绘图窗口外,还有内定的菜单可以
2、使用。使用VisualFortran的绘图功能时,打开窗口的工作是自动完成的。程序代码只需要直接调用绘图函数就可以进行绘图。211-2绘图函数VisualFortran的绘图函数大部分是函数,调用后的返回值大多是用来说明函数是否正常执行。几何绘图函数通常有两个版本,函数名称最后为「_W」的使用虚拟坐标,不然就使用窗口坐标。使用虚拟坐标时,都使用双精度浮点数来传递坐标值。在dflib.f90定义了自定义数据类型xycoord来保存窗口中的一个坐标。TYPExycoordINTEGER(2)xcoordINTEGER(2
3、)ycoordENDTYPExycoord3integer(2)functionSetWindow(invert,x1,y1,x2,y2)用来设定虚拟坐标,invert的值是用来指定Y轴向上为正或为负。invert=.true.时向上为正,invert=.false.时向下为负。(x1,y1)、(x2,y2)则使用双精度浮点数来定义绘图范围两端的虚拟坐标值。integer(2)functionSetColor(index)使用索引值的方法来设定所要使用的颜色。subroutineOutGText(text)调用这个子
4、程序可以在目前画笔的位置上写出text字符串。4integer(4)functionRGBToInteger(R,G,B)全彩模式中,RGB三种色光可以各自有256种色阶变化,所以一个颜色需要使用3bytes的空间来做记录。但是FORTRAN中通常一个整数使用4bytes的空间来做记录,如果分别使用3个变量来记录一个颜色值会很浪费空间,因为这3个变量都只会使用到最低的8个位,其它地方都不会使用。这个函数可以重新组合RGB这三个传入的整数,取出这三个整数中最低8个位的数值,把它重新安排到返回值color中。color中
5、的第0~7bits用存放原本的R,8~15bits会存放原本的G,16~23bits会存放原本的B,剩下第24~31bits的空间则不会使用。5integer(2)functionSetColorRGB(color)用RGB方法来设定颜色,参数color中的第0~7个bits用来设定红光,第8~15bits用来设定绿光,第16~23bits用来设定蓝光,其它位不使用。VisualFortran中以#符号开头的数字,代表一个16进制的数字,例如使用SetColorRGB(#FF0000)来设定颜色。16进制数值在0~9
6、时和10进制数字相同,但是接在9下面的数字为A、B、C、D、E、F。其中A等于10进制的10,B=11,C=12.....,同理可推得1016=16,FF16=255。使用16进制的系统可以比较容易来操作这种需要控制到位内容的数值。6subroutineCLEARSCREEN(area)功能:清除屏幕参数:integer(4)area设定所要清除的范围,有下列的定义值可以使用:$GCLEARSCREEN清除整个屏幕$GVIEWPORT清除目前所设定的可用范围$GWINDOW清除所设定的文字窗口范围integer(2)
7、functionELLIPSE[_W](control,x1,y1,x2,y2)功能:在指定的矩形范围内画椭圆参数:integer(2)control设定要填满内部或是只画外框,有下列的定义值可以使用:$GFILLINTERIOR涂满整个内部,$GBORDER只画外框,integer(2)x1,y1矩形端点1,integer(2)x2,y2矩形端点27integer(2)functionGETCURRENTPOSITION[_W](t)功能:查询目前的画笔位置type(xycoord)t功能:返回目前画笔的所在位置,
8、使用虚拟坐标时t的类型为type(wxycoord)integer(2)functionGETPIXEL[_W](x,y)功能:取得(x,y)点的颜色,返回值为INDEX模式的颜色值。integer(4)functionGETPIXELRGB[_W](x,y)功能:取得(x,y)点的颜色,返回值为RGB模式的颜色值。integer(2)func