Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Алгоритм Ву для растеризации эллипса с антиалиасингом

Поиск:
Этот алгоритм позволяет нарисовать эллипс с использованием антиалиасинга, так что фигура не будет иметь резких краев. Обычные алгоритмы рисования эллипса рисуют все точки одним цветом, этот же алгоритм закрашивает разные участки в разные цвета, и за счет этого "сглаживает" неровности.

Также следует отметить, что этот алгоритм принимает не целые размеры эллипса, а вещественные. При изменении координат эллипс, нарисованный алгоритмом Брэзенхема, перемещается резко, скачками. Эллипс по алгоритму Ву может перемещаться непрерывно. За счет этого можно обеспечивать плавную анимацию при рисовании движущихся изображений.

user posted image


Для рисования точки с координатами (x, y) вызывается процедура SetPixel, которая закрашивает пиксел с указанными координатами цветом со степенью полупрозрачности, заданной параметром Alpha. Значение параметра, равное 1, соответствует полностью прорисованному непрозрачному пикселю (например, белому, если мы рисуем белым по черному). Значение параметра, равное 0, соответствует полностью прозрачному пикселю (т.е. ничего не рисуется). Промежуточные значения соответствуют различным оттенкам серого, или же, в случае рисования цветных пикселей, определяются по формуле Cresult  = (1-α)·Cscreen  + α·Cpen  (формула применяется поочередно для каждой из трех компонент R, G и B).

Программист должен определить эту процедуру и написать код, который осуществляет соответствующие системные вызовы.

Принцип работы алгоритма идентичен принципу работы алгоритма Ву для отрезка. В случае, если вам требуется рисовать только круги и только с целыми координатами центра и с целым радиусом, имеет смысл использовать специализированный алгоритм.





Файлы:
wuellipse.gif

Просмотров: 3317

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную