自己動手做一個數學函數作圖器
- 發布于:2024-01-16
- 共 187 人圍觀
我們先來了解一下VB的坐標系統,VB的坐標系統可分為“窗體的坐標系統”和“對象的坐標系統”兩種,但是這兩種坐標系統均是以屏幕的左上角為原點(0,0),這和我們平時所選取的以中心為原點顯然很不相符,而且使用起來也很不方便。所以,我們要用VB提供的Scale來自定義坐標系,格式如: Picture1.Scale(-10,10)-(10,-10),意思就是把整個Picture1控件定義為一個20×20的區域用于繪圖,以Picture1的中心為原點(0,0)。
有了上面的基礎,我們就可以用Pset(畫點)、Line(畫線)等,輕輕松松地來畫函數的圖像了。
啟動VB,建立一標準EXE工程,再在窗口上如圖所示地布置5個Command Button控件和1個PictureBox控件,輸入以下的代碼就OK了。
Const Pi = 3.1415926535 '定義圓周率
Dim a, wor
'定義用于在Picture1上的一個位置打印字符函數
Private Function PrintWord(X, Y, Word As String)
With Picture1
.CurrentX = X
.CurrentY = Y
.ForeColor = RGB(0, 0, 255)
End With
Picture1.Print Word
End Function
'定義畫點函數
Private Function DrawDot(Px, Py, Color)
Picture1.PSet (Px, Py), Color
End Function
Sub XY() '建立直角坐標系
Picture1.DrawWidth = 1 '設置線條寬度
Picture1.Cls
'設定用戶坐標系,坐標原點在Picture1中心
Picture1.Scale (-10, 10)-(10, -10)
Picture1.Line (-10, 0)-(10, 0), RGB(0, 0, 255)
Picture1.Line -(9.5, 0.5), RGB(0, 0, 255)
Picture1.Line (10, 0)-(9.5, -0.5), RGB(0, 0, 255)
Picture1.ForeColor = RGB(0, 0, 255)
Picture1.Print "X"
'畫 X 軸
Picture1.Line (0, -10)-(0, 10), RGB(0, 0, 255)
Picture1.Line -(0.5, 9.5), RGB(0, 0, 255)
Picture1.Line (0, 10)-(-0.5, 9.5), RGB(0, 0, 255)
Picture1.Print "Y"
'畫 Y 軸
For lin = -9 To 9
Picture1.Line (lin, 0)-(lin, 0.25)
wor = PrintWord(lin - 0.5, -0.5, Str(lin))
Picture1.Line (0, lin)-(-0.25, lin)
If lin <> 0 Then
wor = PrintWord(-0.9, lin, Str(lin))
End If
Next lin
Picture1.DrawWidth = 2
nd Sub
Private Sub Command1_Click() '畫正弦曲線
'用For循環繪點,使其按正弦規律變化。
'步長小,使曲線比較平滑,還能形成動畫效果
For a = -2 * Pi To 2 * Pi Step Pi / 6000
Dot = DrawDot(a, Sin(a) * 5, RGB(0, 255, 0))
Next a
wor = PrintWord(3, -6, "正弦曲線 y=Sinx")
End Sub
Private Sub Command2_Click()
For a = -2 * Pi To 2 * Pi Step Pi / 6000
Dot = DrawDot(a, Cos(a) * 5, RGB(255, 0, 0))
Next a
wor = PrintWord(4, 6, "余弦曲線 y=Cosx")
End Sub
Private Sub Command3_Click()
For a = -3 To 3 Step Pi / 6000
Dot = DrawDot(a, a ^ 2, RGB(0, 0, 0))
Next a
wor = PrintWord(4, 9, "二次曲線 y=x^2")
End Sub
Private Sub Command4_Click()
For a = -8 To 8 Step Pi / 6000
If a = 0 Then GoTo err0 '除數不能為0
Dot = DrawDot(a, 1 / a, RGB(255, 0, 255))
err0:
Next a
wor = PrintWord(6, 2, "雙曲線 y=1/x")
End Sub
Private Sub Command5_Click() '清空屏幕
XY
End Sub
Private Sub Form_Load()
Me.Caption = "數學函數作圖?quot;
Me.Show
Me.AutoRedraw = True
Picture1.BackColor = vbWhite
Command1.Caption = "正弦曲線"
Command2.Caption = "余弦曲線"
Command3.Caption = "二次曲線"
Command4.Caption = "雙曲線"
Command5.Caption = "清空"
XY
End Sub
Private Sub Form_Resize()
Picture1.Width = Me.Width * 0.94
End Sub
怎么樣,是不是很容易就把函數圖像畫出來了?比起“取點、描點、畫圖像”的步驟簡單多了,而且還是動畫效果的呢!
程序在Windows98/XP VB6.0下編譯通過。
標簽: