Страница 1 из 1

[Код] Быстрый алгоритм построения окружности (Брезенхейм)

СообщениеДобавлено: 01.01.2008 (Вт) 17:54
Nord777
Реализация на VB.Net

Код: Выделить всё
   ''' <summary>
  ''' Алгоритм Брезенхейма для построения окружности
  ''' </summary>
  ''' <param name="xc">координата X центра окружности</param>
  ''' <param name="yc">координата Y центра окружности</param>
  ''' <param name="r">Радиус окружности</param>
  Sub DrawCircle(ByVal xc%, ByVal yc%, ByVal r%)
    Dim G As Graphics = Me.CreateGraphics
    Dim x%, y%, d%
    d = 3 - 2 * r
    x = 0 : y = r
    Do While x <= y
      'При помощи FillRectangle рисуется отдельный пиксель ))
      'PS: Не самый быстрый способ отрисовки(только для примера)
      G.FillRectangle(Brushes.Black, x + xc, y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, x + xc, -y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -x + xc, -y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -x + xc, y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, y + xc, x + yc, 1, 1)
      G.FillRectangle(Brushes.Black, y + xc, -x + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -y + xc, -x + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -y + xc, x + yc, 1, 1)
      If d < 0 Then
        d = d + 4 * x + 6
      Else
        d = d + 4 * (x - y) + 10
        y -= 1
      End If
      x += 1
    Loop

    G.Dispose()
  End Sub