none
VB.NET中怎么绘制函数图像? RRS feed

  • 问题

  • 在网上找了很久,找到的是vb的,不是vb.net的。
    比方说要绘制y=6x-3,应该怎么做?
    visual studio 2008
    2009年3月3日 6:57

答案

  •  

    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
            Dim x0 As Single, y0 As Single, x As Single, y As Single, r As Single, width As Single, height As Single
            r = 0.01
            For x0 = 10 To 20
                y0 = 6 * x0 - 3


                width = r * 2
                height = r * 2

                x = x0 - width / 2
                y = y0 - height / 2

                e.Graphics.FillEllipse(Brushes.Red, x, y, width, height)
            Next

           
        End Sub


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 liunain021 2009年3月4日 13:22
    2009年3月4日 1:27
    版主

全部回复

  • 我是要在窗体上 绘制y=6x-3的图像啊,不是这个公式

    绘这个图像的语句和代码?
    visual studio 2008
    2009年3月3日 8:21
  • 你好!
         首先需要给x定一个范围才行,因为这个函数的图象是无限的。
         根据x的范围,去直线的两个端点,然后用DrawLine方法画直线就可以了! 

    周雪峰
    2009年3月3日 8:45
    版主
  •  10到20,我不是简单的画直线,我想用函数的概念来画直线啊
    visual studio 2008
    2009年3月3日 9:27
  • 我的意思是这样的:
    我在定义域[10,20]画直线y=6x-3, 当我输入坐标(15,100)的时候,把15代入到直线方程得出结果为87,87〈100时,就弹出Msbox。

    现在的问题是我不知道怎么画函数y=6x-3的语句代码。
    visual studio 2008
    2009年3月3日 10:37
  • 你看看我理解的对不对啊!
    你的意思是不是根据输入的坐标来决定直线的端点呢?
    实际上画直线的关键就是需要找到两个点而已!
    我已经尽量在理解你的意图了,但是可能还是没有理解你的要求啊!请详细说明一下可以吗? 

    周雪峰
    2009年3月3日 12:38
    版主
  • 周雪峰 说:

    你看看我理解的对不对啊!
    你的意思是不是根据输入的坐标来决定直线的端点呢?
    实际上画直线的关键就是需要找到两个点而已!
    我已经尽量在理解你的意图了,但是可能还是没有理解你的要求啊!请详细说明一下可以吗? 


    周雪峰



    哈哈,没关系,先谢谢你,我解释下。
    我的意思是:在窗体中吧函数y=6x-3的图像绘制出来,定义域是[10,20],就是这样。因不知道代码怎么写,所以来请教。
    visual studio 2008
    2009年3月3日 13:01
  •  使用VB画函数y=2/x的图像 X= -5 to 5,去掉 X=0点

    for x=-5 to 5 step 0.001
    if x=0 then
    else
    y=2/x
    picture1.pset(x,y)
    end if
    next x

    这段代码在网上找的,因该是针对vb的,在vb.net 下怎么画呢?
    visual studio 2008
    2009年3月3日 13:03
  • .NET下似乎不支持这种方式了,可以使用DrawLine()方法来画啊! 
    周雪峰
    2009年3月3日 13:21
    版主
  • 我要画的是函数,直线我知道怎么画的,因为后面我要用到这个函数。

    就像我在前面讲的那样:
    我在定义域[10,20]画直线y=6x-3, 当我输入坐标(15,100)的时候,把15代入到直线方程得出结果为87,87〈100时,就弹出Msbox

    画成直线,我就不能把87和100进行比较了。
    visual studio 2008
    2009年3月3日 13:25
  • 我的平台是vb2003(vb.net)
    visual studio 2008
    2009年3月3日 13:26
  •  

    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
            Dim x0 As Single, y0 As Single, x As Single, y As Single, r As Single, width As Single, height As Single
            r = 0.01
            For x0 = 10 To 20
                y0 = 6 * x0 - 3


                width = r * 2
                height = r * 2

                x = x0 - width / 2
                y = y0 - height / 2

                e.Graphics.FillEllipse(Brushes.Red, x, y, width, height)
            Next

           
        End Sub


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 liunain021 2009年3月4日 13:22
    2009年3月4日 1:27
    版主
  • 画出来的是一些点,不是连贯的线


    visual studio 2008
    2009年3月4日 2:02
  •  Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias '消除锯齿
            e.Graphics.TranslateTransform(0, Me.ClientRectangle.Height) '平移变换,将Y坐标下移Form的高度
            e.Graphics.ScaleTransform(1, -1) '缩放变换,Y坐标缩放比例为-1以完成Y的反向
            e.Graphics.TranslateTransform(0, 60) '把坐标原点放在(0,60)
            Dim pen1 As Pen
            pen1 = New Pen(Color.Black, 2)
            Dim i As Integer
            Dim x1, x2, y1, y2 As Integer
       
            x1 = 10
            y1 = 57
            For i = 1 To 10
                x2 = 10 + i * 1
                y2 = 6 * x2 - 3
                e.Graphics.DrawLine(pen1, x1, y1, x2, y2)
                x1 = x2
                y1 = y2
            Next
        End Sub

    这样可以了
    visual studio 2008
    2009年3月4日 3:53