如题。

解决方案 »

  1.   

    Circle 方法!
    Private Sub Command1_Click()
    Form1.ScaleMode = 3
    Form1.Circle (10, 10), 10
    End Sub
      

  2.   

    我的意思是用  setpixel 来描绘这个圆。
    想到用直径画一天线,然后旋转360度,求旋转点坐标,再描绘。
    不知道还有没有其它方法?
    可能你看了会觉得奇怪,但是没有办法啊
      

  3.   

    圆点坐标:(x0,y0)
    半径:r
    角度:a0则圆上任一点为:(x1,y1)
    x1 = x0 + r * cos(ao * 3.14 /180 )
    y1 = y0 + r * sin(ao * 3.14 /180 )--------------------------------------------------
    设:  
      r = 500
      x0 = 2000
      y0 = 2000做出例图:
      Me.AutoRedraw = True
      Me.PSet (x0, y0)枚举每一点:
      For x1 = x0 - r To x0 + r
        s1 = Sqr(r ^ 2 - (x1 - x0) ^ 2)  
        Me.PSet (x1, y0 - s1)          '即 x1,y0 - s1
        Me.PSet (x1, y0 + s1)          '即 x1,y0 + s1
      Next x1
      

  4.   

    Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
    Private Type POINTAPI
            x As Long
            y As Long
    End Type
    Private Const pi = 3.1415926
    Private Sub DrawCircle(obj As Object, pt As POINTAPI, radius As Double, crColor As Long)
    Dim angle As Double
    For angle = 0 To 2 * pi Step pi / 360
       SetPixel obj.hdc, pt.x + radius * Cos(angle), pt.y + radius * Sin(angle), crColor
    Next
    End SubPrivate Sub Command1_Click()
    Dim pt As POINTAPI
    Dim radius As Double
    radius = 50
    pt.x = 100
    pt.y = 100
    DrawCircle Form1, pt, radius, vbRed
    //DrawCircle picture1, pt, radius, vbRedEnd Sub
      

  5.   


    建议使用BRESENHAM方法,不需要做FLOAT运算。
      

  6.   

    BRESENHAM?怎么说?没有听说过
      

  7.   

    '简单例子,随手写的,用PSet写的可能比较慢!
    Private Sub Command1_Click()
        Dim i As Double
        Dim a As Integer, b As Integer
        Dim r As Integer
        Dim x As Double, y As Double
        a = CInt(Text1) '圆心坐标
        b = CInt(Text2) '圆心坐标
        r = CInt(Text3) '圆心半径
        For i = a - r To a + r Step 0.01
            x = i
            y = Sqr(r ^ 2 - (x - a) ^ 2) + b
            Picture1.PSet (x, y), vbRed
            Picture1.PSet (x, 2 * b - y), vbRed
        Next
    End SubPrivate Sub Form_Load()
        Picture1.AutoRedraw = True
        Picture1.ScaleMode = 3
        Picture1.CurrentX = 100
        Picture1.CurrentY = 100    Text1 = "100"
        Text2 = "100"
        Text3 = "50"    Command1.Caption = "绘制"
    End Sub