Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Сглаживание?


Автор: ivan219 14.3.2007, 21:07
Вот нарисовал я линию при помощи Canvas получилась лесенка а как зделать так чтоб была не лесенка а "прямая линия" нарисованная под углом конечно, вобщем нужен алгоритм зглажевания smile 

Автор: Snowy 14.3.2007, 21:20
Это называется антиалиасинг.
В стандартном GDI отсутствует.
Используй GDI+ - там он просто включается.

Автор: ivan219 14.3.2007, 21:53
Да точно antialiasing

Snowy, что неужели в GDI ничего нельзя зделать ведь GDI+ в Win98 непойдёт или пойдёт?

Добавлено @ 21:55 
Да и поповоду GDI+ утебя есть рабочая библиотека так как которя уменя была установилась но не компилилась вылетали ошибки в WinXP.

Добавлено @ 22:06 
Сейчас попробовал вобще Deiphi виснет и не компилит smile 

Автор: Alexeis 14.3.2007, 22:56
ivan219, да можно и на GDI, просто используется свой метод рисования линий.

Попробуй этот модуль.

Автор: ivan219 15.3.2007, 01:04
Alexeis, спасибо неплохой модуль.

Автор: Bitter 15.3.2007, 01:16
ivan219, если ты хочешь сгладить линию вручную, т.е. программно, тогда так:

Существует 3 метода сглаживния: предфильтрация, сверхопрос и постфильтрация.

Предфильтрация.

В этой технологии цвет пикселя вычисляется на основе покрытия объектом (в твоем случае линией). Для этого есть эффективный алгоритм, точнее его модификация: модифицированный алгоритм Брезенхема, разработанный Питтвэем. Про него можно почитать тут:
http://canon.osu.cctpu.edu.ru/diplom/algor/2.10.asp?ThemeID=2

Но для таких фигур как линия, этот алгоритм дороговат.

Сверхопрос.

Опрос - дискретизация объекта. Обычно опрос равен разрешению экрана. Метод сверхопроса заключается в проведении опроса линии с большей частотой, в этом случае каждый пиксел формируется как среднее нескольких опросов. Другими словами, после того, как ты нарисовал линию, прийдется пройтись по ней еще раз и расчитать значения соседних пикселов, как среднее окружающих их пикселов. Пример программ прикрепил.

Постфильтрация.

Для повышения качества используется постфильтрация.
Тоже самое, что сверх опрос, но используется маска весов. Например, такая:
1 2 1
2 1 2
1 2 1

или такая

0.5 1 0.5
1    1    1
0.5 1 0.5

в общем любая
пример тоже прикрепил

Автор: ivan219 15.3.2007, 19:05
Bitter, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)