Алгоритм рисования сглаженного круга? - PullRequest
14 голосов
/ 28 января 2009

Какой хороший алгоритм для рисования сглаженных кругов? (Заполнено и не заполнено.)

Ответы [ 3 ]

10 голосов
/ 28 января 2009

У Брезенхэма (из линейного алгоритма славы) также был алгоритм круга.

Сяолинь Ву адаптировал алгоритм линий для сглаживания, а также сделал то же самое с алгоритмом окружности

http://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithm

Вы можете найти алгоритм круга с этим поиском:

http://www.google.com/search?q=Xiaolin%20Wu%20circle

-Adam

5 голосов
/ 28 января 2009

Если вы хотите легкий, сделайте мягкое размытие от пиксельной матрицы A до пиксельной матрицы B.

Это тот, который я использовал (здесь, в псевдокоде)

anti_alised_matrix[x][y] = point[x][y] / 2 + point[x+1][y]/8 + point[x-1][y]/8 + point[x][y-1]/8 + point[x][y+1]/8;

Конечно, это применимо к оттенкам серого, но вы можете легко сделать то же самое в RGB.

Это действительно очень просто, вы также можете добавить диагонали, т.е. [x + 1] [y + 1] и разделить его на 16 или 32.

0 голосов
/ 28 января 2009

Создание графического объекта g. Do

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

Нарисуйте свой сглаженный круг с помощью g.FillEllipse или g.DrawEllipse

...