国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
fortran繪圖、界面功能簡介之一

對于fortran的繪圖、界面功能,我僅僅做一個簡單的羅列,這樣方便大家的討論:
1.利用fortran的擴充函數(shù)繪圖,下面是一個簡單的例子,是http://www.programfan.com上面有人貼出的;
Visual Fortran中有提供繪圖功能。Visual Fortran的繪圖功能不完全是以擴充函數(shù)的類型存在,使用它的繪圖功能必須在選擇Project類型時,選擇Standard Graphics或QuickWin模式。Visual Fortran的QuickWin 及Standard Graphics模式在簡單的繪圖使用上會比較方便,它的繪圖函數(shù)功能比較多樣,不過效率會比較差,而且不支持動畫功能。
Standard Graphics和QuickWin模式在繪圖方面的使用方法完全相同,它們都是調(diào)用相同的函數(shù)來繪圖。差別在于Standard Graphics只能打開一個窗口來繪圖、QuickWin模式則可以打開多個窗口來繪圖。QuickWin模式下可以有菜單及對話窗的功能, Standard Graphics則不行。Standard Graphics模式的程序代碼可以原封不動直接轉(zhuǎn)換到QuickWin模式下使用,但是QuickWin的程序代碼并不一定可以直接拿到 Standard Graphics模式下使用。
下面這個程序會在屏幕上畫出一條斜線、一個方形及一個橢圓。編譯程序時,請選擇Fortran Standard Graphics or QuickWin Application這個模式。這個程序可以在Standard Graphics或QuickWin模式下使用。打開好Project后,再把下面的程序加入Project中來編譯。
1.! 簡單的繪圖范例
2.! By Perng 1997/9/19
3.program Plot_Demo
4.! 使用Visual Fortran的繪圖功能時需要module dflib
5.use DFLIB 
6.implicit none
7. type(xycoord) :: t
8. integer :: result
9. 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, 150, 50 )
13. ! 畫一個可以放入在(10,60)--(150,100)方形當中的空心橢圓
14. result=Ellipse($GBORDER, 10, 60, 150, 100)
15.end program Plot_Demo
使用Standard Graphics模式時,會出現(xiàn)一個繪圖窗口來畫圖。使用QuickWin模式時,除了繪圖窗口外,還有內(nèi)定的菜單可以使用。File菜單中的Print可以把圖形顯示出,Save可以把繪圖結(jié)果儲存成*.BMP圖文件。
使用Visual Fortran的繪圖功能時,打開窗口的工作是自動完成的。程序代碼只需要直接調(diào)用繪圖函數(shù)就可以進行繪圖,下面對程序中所使用的繪圖函數(shù)做一些介紹:
subroutine MoveTo(x,y,t)
使用這個子程序時,要先把屏幕想像成一張畫紙,程序會使用一只畫筆在屏幕上畫畫。MoveTo(x,y,t)可以把這只畫筆移動到畫紙上的(x,y)坐標處,參數(shù)t則會返回移動之前的畫筆所在位置(這個參數(shù)其實沒有什么用,不過既然有規(guī)定就一定要把它放入)。
請注意,原點(0,0)是位在窗口的左上角,x坐標軸向右為正,y坐標軸向下為正。
integer(2) function LineTo(x,y)
這個函數(shù)可以把畫筆從目前的位置到(x,y)處畫一條直線。返回值如果不為0,代表函數(shù)運行不正常。
integer(2) function Rectangle( control, x1, y1, x2, y2 )
這個函數(shù)可以在(x1,y1)、(x2,y2)兩個端點間畫出一個方形。control值可以用來設定是要畫出一個實心方形或是只有外框而已。在范例中把 control的值用$GFILLINTERIOR來代入,表示要畫實心。$GFILLINTERIOR定義在MODULE DFLIB里面。
integer(2) function Ellipse(control,x1,y1,x2,y2)
這個函數(shù)會在(x1,y1)、(x2,y2)兩端點間所形成的矩形中畫橢圓。control的意義同上,在范例中使用$GBORDER,代表只畫出外框。
下面這個范例畫出SIN函數(shù)的圖形:
1.! sin函數(shù)的繪圖范例
2.program Plot_Sine
3. use DFLIB
4.implicit none
5. integer, parameter :: lines=500 ! 用多少線段來畫函數(shù)曲線
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_Bottom=-2.0 ! y軸最小范圍
10. integer :: result ! 取回繪圖函數(shù)運行狀態(tài)
11. integer(kind=2) :: color ! 設定顏色用
12. real(kind=8) :: step ! 循環(huán)的增量
13. real(kind=8) :: x,y ! 繪圖時使用,每條小線段都連接
14. real(kind=8) :: NewX,NewY ! (x,y)及(NewX,NewY)
15. real(kind=8), external :: f ! 待繪圖的函數(shù)
16. type(wxycoord) :: wt ! 返回上一次的虛擬坐標位置
17. type(xycoord) :: t ! 返回上一次的實際坐標位置
18.
19. ! 設定虛擬坐標范圍大小 
20. result=SetWindow( .true. , X_Start, Y_Top, X_End, Y_Bottom )
21. ! 用索引值的方法來設定顏色
22. result=SetColor(2) ! 內(nèi)定的2號是應該是綠色
23. call MoveTo(10,20,t) ! 移動畫筆到窗口的(10,20)
24. call OutGText("f(x)=sin(x)") ! 寫出內(nèi)容
25. ! 使用全彩RGB 0-255的256種色階來設定顏色
26. color=RGBToInteger(255,0,0) ! 把控制RGB的三個值轉(zhuǎn)換到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. ! 參數(shù)#FF0000是使用16進制的方法來表示一個整數(shù)
36. result=SetColorRGB(#FF0000) 
37. ! 開始繪制小線段們
38. do x=X_Start,X_End-step,step
39. y=f(x) ! 線段的左端點
40. NewX=x+step 
41. NewY=f(NewX) ! 線段的右端點
42. call MoveTo_W(x,y,wt)
43. result=LineTo_W(NewX,NewY)
44. end do
45. ! 設定程序結(jié)束后,窗口會繼續(xù)保留
46. result=SetExitQQ(QWIN$EXITPERSIST)
47.end
48.! 所要繪圖的函數(shù)
49.real(kind=8) function f(x)
50.implicit none
51. real(kind=8) :: x
52. f=sin(x)
53. return
54.end function f
這個程序會以目前Windows分辨率的大小來打開繪圖窗口。程序執(zhí)行后只能夠看到窗口的一小部分,讀者可以試著按下Alt+Enter來把窗口放大成全屏幕大小,不然看不到全部的圖形。使用QuickWin模式時,并不像使用SGL時一樣可以得到窗口大小改變的信息,所以QuickWin下的虛擬坐標是對固定分辨率來對應,不會隨著窗口大小改變而縮放圖形。
把這個程序中新使用的繪圖函數(shù)做一個介紹
integer(2) function SetWindow( invert, x1,y1, x2,y2 )
用來設定虛擬坐標,invert的值是用來指定Y軸向上為正或為負。invert=.true.時向上為正,invert=.false.時向下為負。(x1,y1)、(x2,y2)則使用雙精度浮點數(shù)來定義繪圖范圍兩端的虛擬坐標值。
integer(2) function SetColor(index)
使用索引值的方法來設定所要使用的顏色。
subroutine OutGText( text )
調(diào)用這個子程序可以在目前畫筆的位置上寫出text字符串。
integer(4) function RGBToInteger(R,G,B)
前 面有提過,全彩模式中,RGB三種色光可以各自有256種色階變化,所以一個顏色需要使用3 bytes的空間來做記錄。但是FORTRAN中通常一個整數(shù)使用4 bytes的空間來做記錄,如果分別使用3個變量來記錄一個顏色值會很浪費空間,因為這3個變量都只會使用到最低的8個位,其它地方都不會使用。
這 個函數(shù)可以重新組合R G B這三個傳入的整數(shù),取出這三個整數(shù)中最低8個位的數(shù)值,把它重新安排到返回值color中。color中的第0~7 bits用存放原本的R,8~15 bits會存放原本的G,16~23 bits會存放原本的B,剩下第24~31 bits的空間則不會使用。
integer(2) function SetColorRGB( color )
用RGB 方法來設定顏色,參數(shù)color中的第0~7個bits用來設定紅光,第8~15 bits用來設定綠光,第16~23 bits用來設定藍光,其它位不使用。在范例當中曾使用SetColorRGB(#FF0000)來設定顏色,在Visual Fortran中以#符號開頭的數(shù)字,代表一個16進制的數(shù)字。
16進制數(shù)值在0~9時和10進制數(shù)字相同,但是接在9下面的數(shù)字為A、B、C、 D、E、F。其中A等于10進制的10,B=11,C=12.....,同理可推得1016=16,F(xiàn)F16=255。使用16進制的系統(tǒng)可以比較容易來操作這種需要控制到位內(nèi)容的數(shù)值。正規(guī)的FORTRAN 90寫法應該用Z”FF0000”來設定16進制的數(shù)值,第5章的最后一節(jié)有介紹這個方法。在此順便范例一下Visual Fortran的擴充語法。
2.利用科學繪圖軟件包PLPlot、PGPLOT等
PLplot 是一個用于多種編程語言(C, C++, Fortran, Java, Python, Perl etc.)的跨平臺(Unix, Linux, Dos, Windows, Mac OS, OS/2 etc.)的科學繪圖程序包,完全免費,源代碼開放。如果你用ABSoft Pro Fortran,該程序包已經(jīng)包括在內(nèi)。如果你用別的平臺,你可以用這些源代碼建立自己的庫文件。
http://plplot.sourceforge.net/
http://keihanna.dl.sourceforge.net/sourceforge/plplot/plplot-5.3.0-printable.pdf
http://keihanna.dl.sourceforge.net/sourceforge/plplot/plplot-5.3.0.tar.gz
http://www.astro.caltech.edu/%7Etjp/pgplot/
上面的連接不一定能連接上,你可以到北大天網(wǎng)資源里面搜一下。
3.利用繪圖軟件包Matfor
大家可以看看http://www.softwarechn.com/ancad/ancad_index.htm是關(guān)于他的簡單介紹。
具體的直接去網(wǎng)站http://www.ancad.com可以下載軟件。
4.用OPENGL庫繪圖
關(guān)于這個vf的幫助里面有例子,但是要繪制三維圖形的話,首先得知道一些圖形學的基礎知識。
5.windowsGDI繪圖
這個還是API編程那一部分,比較麻煩。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Advanced Graphics Using OpenGL
使用HTML5的Canvas繪制曲線的簡單方法
MFC 動態(tài)曲線 支持縮放 顯示圖例(CStatic派生類)
C語言之圖形顯示及計算機繪圖技術(shù) | C語言研究中心
Delphi屏幕繪圖
CDC::TabbedTextOut
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服