Обсуждение статьи "Создание графической библиотеки для MetaTrader 5 по образцу Cairo (Часть 2): Точки, контуры и путь"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Создание графической библиотеки для MetaTrader 5 по образцу Cairo (Часть 2): Точки, контуры и путь:
Ступенчатость границ в первой части была следствием бинарного подхода к рендерингу и потери субпиксельной информации.
На первом фрагменте рисунка ребро проходит точно по границе пикселя, поэтому при хранении целочисленной координаты информация не теряется. На втором фрагменте исходная координата равна 10,35, но при сохранении в целочисленном формате дробная часть отбрасывается. В результате рендерер в обоих случаях получает одну и ту же сохраненную координату и не может различить эти случаи. На третьем фрагменте координата хранится как число типа double. Это позволяет сохранить информацию о частичном покрытии столбца с индексом 10 и отрисовать ребро в соответствии с геометрией.
Это влечет за собой два практических следствия:
Даже если сложный значок содержит тысячи точек, его геометрические данные занимают мало памяти по сравнению с пиксельным буфером для отрисовки панели.
Работа с кривыми — еще одна причина сохранять координаты с плавающей точкой. При спрямлении кривой вершины полученной ломаной имеют дробные координаты (например, 12,3719… вместо 12). Если бы тип точки не позволял хранить такие значения, координаты кривых еще до рисования квантовались бы с шагом в один пиксель, и сглаживание не смогло бы компенсировать эту потерю точности.
Автор: Sandro Begashvili