如何实现将输入的函数表达式读取到内部,并画出函数图像!

解决方案 »

  1.   

    自己写方法完成吧,分别实现画线和画点等
    举例,画线
    Sub PLine(x1 As Long, y1 As Long, x2 As Long, y2 As Long, r As Long, g As Long, b As Long)
        Picture1.Line (x1, y1)-(x2, y2), RGB(r, g, b)
    End SubPrivate Sub Command1_Click()
        Dim s As String, i As Long, ss() As String, ss2() As String
        s = Text1.Text
        ss = Split(s, ",")
        ss2 = Split(ss(0), " ")
        If ss2(0) = "Picture1.Line" Then
           PLine Val(ss2(1)), Val(ss(1)), Val(ss(2)), Val(ss(3)), Val(ss(4)), Val(ss(5)), Val(ss(6))
        End If
    End SubPrivate Sub Form_Load()
        Picture1.Scale (-10, 25)-(10, -25)             '定义坐标系
        Text1.Text = "Picture1.Line -10,0,10,0,0,0,255"
    End Sub
      

  2.   

    可以考虑使用BitBlt来实现。参考:Option Explicit
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
                                                 ByVal x As Long, _
                                                 ByVal y As Long, _
                                                 ByVal nWidth As Long, _
                                                 ByVal nHeight As Long, _
                                                 ByVal hSrcDC As Long, _
                                                 ByVal xSrc As Long, _
                                                 ByVal ySrc As Long, _
                                                 ByVal dwRop As Long) As Long
                                                 
    Private Sub btnSaveGS_Click()
        Dim lngP As Long
        picGS.Cls
        lngP = BitBlt(picGS.hDC, 0, 0, picGS.ScaleWidth, picGS.ScaleHeight, Me.hDC, txtGS.Left, txtGS.Top, vbSrcCopy)
        picGS.Refresh
        SavePicture picGS.Image, "C:\GS.bmp"
    End SubPrivate Sub Form_Load()
        With Me
            .ScaleMode = 3
        End With
        btnSaveGS.Caption = "保存公式"
        With txtGS
            .Text = "y=A*Sin(x)"
            .FontSize = 16
            .BorderStyle = 1
            .Appearance = 0
        End With
        With picGS
            .Appearance = 0
            .BorderStyle = 1
            .AutoRedraw = True
            .Width = txtGS.Width
            .Height = txtGS.Height
            .ScaleMode = 3
        End With
        
    End Sub