小弟我想在picturebox中画多条曲线!曲线表达式为y = a * 1/x + k其中x为变量!要求:以picturebox的左下角为顶点,只画第一象限的图,每次输入不同的a和k时,就画一条曲线,并且前面的曲线不会被清除。横坐标以10递增,纵坐标以0.05递增。问题一解决就给分!如果不够再加都可以!请各位大哥大姐一定要帮帮小弟我呀!

解决方案 »

  1.   

    daisy8675(莫依)姐姐,我知道你会!你就帮帮我吧!谢谢了
      

  2.   

    不是不幫你,是我自己的程序沒有寫完,我剛被boss問話,我剛答應明天給他回分析資料,現在在趕....你得等等,我真的沒有時間,你如果明天要,我可以來寫一個
      

  3.   

    Dim s As LongPrivate Sub Command1_Click()
    s = s + 1
    drawit s, 0, QBColor(s Mod 15)
    End Sub
    Sub drawit(ByVal a As Double, ByVal k As Double, ByVal color As Long)
    Picture1.Scale (0, 0.05)-(1000, 0)
    For i = 10 To 1000 Step 10
    Picture1.PSet (i, (a / i + k)), color
    Next
    End Sub
      

  4.   

    楼上的,我想要平滑连接的,不要点画的!不过还是谢谢了,但是每次点际后画的图要一样啊!!--------------------------------------------------------------------------------
    daisy8675(莫依) 好的,我等你!
      

  5.   

    要做到平滑不容易啊修改了一下 northwolves(野性的呼唤)的程序,看看行不行: 
    Dim s As Long
    Private Sub Command1_Click()
    s = s + 1
    drawit s, 0, QBColor(s Mod 15)
    End Sub
    Sub drawit(ByVal a As Double, ByVal k As Double, ByVal color As Long)
    Picture1.Scale (0, 0.0005)-(100000, 0)
    Picture1.PSet (10, (a / 10 + k)), color
    For i = 10 To 100000 Step 10
    Picture1.Line -(i, (a / i + k)), color
    'Picture1.PSet (i, (a / i + k)), color
    Next
    End Subpicturebox最好做得尽可能地大。。
      

  6.   

    但是图像不能保存啊!也就是说当窗体间进行切换后,图像就不在了!或者当把picturebox的一半移出电脑屏幕后再移回来,移出去的部分所绘出的图形也就不在了!我是想在窗体切换之后图像还保留在picturebox中!这怎么解决啊??
      

  7.   

    这些东西自己搞定哪!不要什么问题自己都没什么想,就依靠别人!
    自己实在搞不定才
    你的那个我就不信你自己搞不定!
    参考一下MSDN的 Picture。Scale吧!
      

  8.   

    把你的Picture.AutoReDraw属性设置成True就可以了!
      

  9.   

    但是图像不能保存啊!也就是说当窗体间进行切换后,图像就不在了!或者当把picturebox的一半移出电脑屏幕后再移回来,移出去的部分所绘出的图形也就不在了!我是想在窗体切换之后图像还保留在picturebox中!这怎么解决啊??
    ==============================
    不是吧,连这个也问最重要地是你满不满意上面代码的效果,如果勉强可以接受那么就加几句:
    Dim s As Long
    Sub drawit(ByVal a As Double, ByVal k As Double, ByVal color As Long)
    Picture1.Scale (0, 0.0005)-(100000, 0)
    Picture1.PSet (10, (a / 10 + k)), color
    For i = 10 To 100000 Step 10
    Picture1.Line -(i, (a / i + k)), color
    'Picture1.PSet (i, (a / i + k)), color
    Next
    End SubPrivate Sub Form_Load()
    Me.WindowState = 2
    Me.Show
    Picture1.Left = 0
    Picture1.Top = 0
    Picture1.Width = Me.Width
    Picture1.Height = Me.Height
    Picture1.AutoRedraw = True
    End SubPrivate Sub Picture1_Click()
    s = s + 1
    drawit s, 0, QBColor(s Mod 15)
    End Sub取消了command,每次单击picturebox就画一条线
      

  10.   

    哦!明白一点了!那再问一下,Picture1.Scale (0, 0.0005)-(100000, 0)中0.0005和100000是怎么算出来的?还有就是我是要输入输入不同的a 和k来画这条曲线,输入一次画一条就可以了!
      

  11.   

    Scale不是有两个参数吗(x1, y1) - (x2, y2)
    (x1, y1)左上角的水平和垂直坐标
    (x2, y2)右下角的水平和垂直坐标
    你完全可以根据对角线的两点算出中点(把它作为新的坐标)
    然后在新坐标中y= a * 1/x + k
      

  12.   

    还有就是为什么i要从10to 100000呢??
      

  13.   

    留言收到,其实昨晚已试了试,但中途有事就放下了。。哦!明白一点了!那再问一下,Picture1.Scale (0, 0.0005)-(100000, 0)中0.0005和100000是怎么算出来的?
    还有就是为什么i要从10to 100000呢??
    =======================================
    不是算出来的,是随手定的,目的是尽量画多点线,这样平滑的效果会好些。Sub drawit(ByVal a As Double, ByVal k As Double, ByVal color As Long)
    Picture1.Scale (0, 0.0005)-(100000, 0)
    Picture1.PSet (10, (a / 10 + k)), color
    For i = 20 To 100000 Step 10
    Picture1.Line -(i, (a / i + k)), color
    'Picture1.PSet (i, (a / i + k)), color
    Next
    End SubPrivate Sub Form_Load()
    Me.WindowState = 2
    Me.Show
    Picture1.Left = 0
    Picture1.Top = 0
    Picture1.Width = Me.Width
    Picture1.Height = Me.Height
    Picture1.AutoRedraw = True
    End SubPrivate Sub Picture1_Click()
    'Dim a As Double
    'Dim k As Double
    a = InputBox("请输入a的值:")
    k = InputBox("请输入k的值:")
    If IsNumeric(a) And IsNumeric(k) Then
    drawit a, k, QBColor(a Mod 15)
    End If
    End Sub如果你要同时输入a和k的值,上面的代码可能要注意a和k的取值,例如,如果a=4,那么在我的机子里k要到0.00005才见到效果,k=0.0005时在屏幕上就看不到效果了,因为画了到屏幕外面去了如果不要这么小的值可以改上面的为:
    Sub drawit(ByVal a As Double, ByVal k As Double, ByVal color As Long)
    Picture1.Scale (0, 0.05)-(1000, 0)
    Picture1.PSet (10, (a / 10 + k)), color
    For i = 20 To 1000 Step 10
    Picture1.Line -(i, (a / i + k)), color
    'Picture1.PSet (i, (a / i + k)), color
    Next
    End Sub那么a=4,k=0.005就看到效果了,怎么修改看你具体情况
      

  14.   

    I Know!非常感谢!!我再研究一下先,如果有什么问题,我发短信给你!谢谢了