用VB繪製正弦動畫曲線

2021-04-02 06:37:34 字數 1849 閱讀 7078

用vb繪製正弦動畫曲線

vb提供了繪圖的基本方法,如pset、line、circle,能夠繪出點、直線、圓等基本圖形,但沒有提供繪曲線的方法。其實,我們可以靈活運用基本繪圖方法,來繪出所需要的曲線,甚至達到動畫的效果。

一、vb座標系介紹

vb裡有三種座標系,螢幕座標系、窗體座標系和窗體內的物件座標系,這三種座標系都是以其左上角為座標原點,與平常使用的幾何座標系不一致,我們繪圖時感到不習慣。vb允許程式設計人員自定義座標系,根據需要定義座標原點的位置。

自定義座標系的方法是scale,語法格式:

scale (x1,y1) - (x2,y2)

其中: x1是繪圖區域左上角的橫座標;

y1是繪圖區域左上角的縱座標;

x2是繪圖區域右下角的橫座標;

y2是繪圖區域右下角的縱座標。

例如:scale (-320,240) - (320,-240) 定義了繪圖區域大小為640×480,座標原點(0,0)在繪圖區域中心。

二、繪製正弦動畫曲線

啟動vb6,新建標準exe工程,新增乙個picturebox控制項,兩個commandbutton控制項到窗體,其caption屬性值分別設為正弦曲線和結束。如圖1:

圖1 通用宣告模組:

const pi = 3.14159

dim a

private sub command1_click() 注釋:畫正弦曲線

注釋:首先清除picture1內的圖形

picture1.cls

注釋:scale方法設定使用者座標系,座標原點在picture1中心

picture1.scalemode = 0

picture1.scalemode = 3

picture1.scale (-10, 10)- (10, -10)

注釋:設定繪線寬度

picture1.drawwidth = 1

注釋:繪座標系的x軸及箭頭線

picture1.line (-10, 0)-(10, 0), vbblue

picture1.line (9, 0.5)-(10, 0), vbblue

picture1.line -(9, -0.5), vbblue

picture1.forecolor = vbblue

picture1.print "x"

注釋:繪座標系的y軸及箭頭線

picture1.line (0, 10)-(0, -10), vbblue

picture1.line (0.5, 9)-(0, 10), vbblue

picture1.line -(-0.5, 9), vbblue

picture1.print "y"

注釋:指定位置顯示原點o

picture1.currentx = 0.5

picture1.currenty = -0.5

picture1.print "o"

注釋:重設繪線寬度

picture1.drawwidth = 2

注釋:用for迴圈繪點,使其按正弦規律變化。步長值很小,使其形成動畫效果

for a = -2 * pi to 2 * pi step pi / 6000

picture1.pset (a, sin(a) * 5), vbred

next

注釋:指定位置顯示描述文字

picture1.currentx = pi / 2

picture1.currenty = -7

picture1.forecolor = vbblack

picture1.print "正弦曲線示意"

end sub

Lua繪製正弦曲線

夜半突來興致,看了下wxlua的圖形處理部分,感覺挺好玩,就試著寫了一段畫正弦曲線的 為了實現動畫效果特意新增了延遲效果,感覺延遲的效率好低,畫的時候視窗拖都拖不動。效果圖 部分 點和線實現正弦曲線 wxlua支援 aurhor chuwp date 2010.10.30 require wx lo...

matplotlib繪製正弦和余弦曲線

一 介紹 官網 二 import numpy asnp import matplotlib pyplot asplt line x np linspace np.pi np.pi 256 endpoint true 定義余弦函式正弦函式 c,s np.cos x np sin x plt figur...

控制台繪製正弦 余弦曲線

當然了,這裡我們不用陣列 否則就沒技術含量了。正弦曲線的特點是左右對稱,且左邊部分的縱座標是從1一直降到 1的,相應的右邊的縱座標是從 1一直遞增到1。難點在於顯示器只能按行輸出,也就是說輸出了一行後不能再掉頭輸出上一行的資訊。我們自定義乙個縮放係數a為10,用acos 1 10可以算得等於31,因...