科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件自己动手做一个数学函数作图器

自己动手做一个数学函数作图器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

今天的课题就是——用VB做一个数学函数作图器!

作者:陈新新 来源:soft6 2008年5月14日

关键字: 作图器 数学函数 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件

自己动手做一个数学函数作图器

  学习中我们经常会遇到一些要求作图的题目,数学就是一个很好的例子,君不见,哪一个学生不是整天拿着一根尺子几只笔在画啊画的?要是能有一个作图的软件该有多好啊!虽然拿来主义是我们一向的作风,可是只顾拿来而从不动一下脑筋又有点儿说不过去,所以,今天的课题就是——用VB做一个数学函数作图器!

  我们先来了解一下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下编译通过。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章