Я видел сглаживание в Windows с использованием GDI +, Java, а также с помощью Photoshop и Gimp. Существуют ли какие-либо другие библиотеки, которые предоставляют возможность сглаживания, не зависящую от поддержки со стороны ОС хоста?
Альтернативы сглаживания
Ответы (3)
Antigrain Geometry обеспечивает сглаживание графики в программном обеспечении.
Как заметил Саймон, термин «сглаживание» используется довольно часто неправильно, поэтому всегда полезно точно знать, что вы пытаетесь сделать.
Поскольку вы упоминаете GDI, я предполагаю, что вы говорите о поддержании хороших четких краев при изменении их размера - поэтому что-то вроде символа в шрифте выглядит чистым и не пиксельным, когда вы изменяете его размер в 2 или 3 раза от исходного размера. Для такого рода вещей я раньше использовал технику, называемую увеличением с альфа-тестированием - вы можете прочитать технический документ здесь:
http://www.valvesoftware.com/publications/2007/SIGGRAPH200<7_AlphaTested/Magnification.pdf >
Когда я реализовал его, я использовал более одной плоскости, чтобы я мог получить более точные края на всех типах объектов, но это кратко покрывает это ближе к концу. Из всех подходов (которые я использовал) для сохранения качества при масштабировании векторных изображений это был самый простой и качественный. Это также имеет то преимущество, что легко реализуется аппаратно. С точки зрения существующего API лучше всего использовать OpenGL или Direct3D - при этом на самом деле требуется только билинейная фильтрация и отображение текстуры для выполнения того, что он делает, так что вы можете использовать свой собственный (я использовал в прошлом). Если вы всегда имеете дело с прямоугольниками и вам нужно только масштабировать, это довольно тривиально, а добавление вращения не добавляет такой сложности. Если вы делаете собственное изображение, обязательно обратите особое внимание на субпиксельное позиционирование (как вы разрешаете положение пикселей, которые не попадают в полный пиксель, поскольку это критично для качества и иногда игнорируется.
Надеюсь, это поможет!
Есть (кстати, часто ошибочно, но это мертвая лошадь) много подходов сглаживания, которые можно использовать. В зависимости от того, что вы знаете об исходном сигнале и его предполагаемом использовании, разные вещи, скорее всего, дадут вам желаемый результат.
«Поддержка со стороны ОС хоста», вероятно, наиболее разумна, если вывод осуществляется через средства отображения ОС, поскольку они имеют наибольшую информацию о том, что делается с изображением.
Я полагаю, это долгий способ спросить, что вы на самом деле пытаетесь сделать? Многие графические библиотеки предоставляют некоторую форму сглаживания, подходят ли они или нет, во многом зависит от того, чего вы пытаетесь достичь.