Обсуждение статьи "Создание графической библиотеки для MetaTrader 5 по образцу Cairo (Часть 4): Сглаживание, покрытие и композиция"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Создание графической библиотеки для MetaTrader 5 по образцу Cairo (Часть 4): Сглаживание, покрытие и композиция:
Вы рисуете фигуры в буфере и выводите их на график или в пользовательский интерфейс. Все выглядит хорошо — пока наклонные ребра и полупрозрачность не выявят ограничения такого подхода. Любое ребро, которое не является строго горизонтальным или вертикальным, превращается в заметную лесенку, узкие элементы могут исчезать, а полупрозрачная заливка может перезаписывать то, что уже было под ней, вместо корректного смешивания с ним. Это не независимые ошибки: у них одна и та же первопричина. Растеризатор из третьей части отвечал на вопрос "находится ли центр пикселя внутри фигуры?" только "да" или "нет" (0 или 1). Нам нужен количественный ответ на вопрос "какая доля этого пикселя находится внутри фигуры?" — значение покрытия от 0 до 1.
В этой части мы введем значение покрытия и используем его на этапе композиции, чтобы сглаживание и альфа-смешивание выполнялись с помощью одних и тех же вычислений. Покрытие вычисляется точно по оси X (вычитанием интервалов) и приближенно по оси Y — с помощью N горизонтальных линий сканирования внутри строки пикселей (CairoAaSamples). Изменения в реализации невелики и локальны: в растеризатор добавляются накопитель покрытия и AddSpan для учета частично покрытых пикселей, в Color.mqh — CairoBlendOver для умножения альфа-значения источника на покрытие, а в Config.mqh — настройка качества, доступная во время выполнения. Измеримые цели: ребра должны стать гладкими без отдельного прохода сглаживания, перекрывающиеся полупрозрачные фигуры — корректно смешиваться, а настройка CairoAaSamples — обеспечивать понятное и измеримое соотношение качества и скорости.
Автор: Sandro Begashvili