Включить сглаживание с помощью Xlib - PullRequest
2 голосов
/ 13 июня 2011

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

Теперь вопрос прост.Можно ли как-нибудь сказать X: скажите, пожалуйста, что-нибудь сглаживающее перед тем, как рисовать ?Или я должен избегать использования XDrawArc и использовать пользовательскую функцию, которая вызывает XDrawPoint для каждой точки круга?Или есть третье решение?

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 13 июня 2011

Краткий ответ - «нет». Xlib не выполняет сглаживание.

Более длинный ответ: «Вы можете использовать API более высокого уровня, такие как Cairo Graphics». Нет необходимости кататься самостоятельно.

2 голосов
/ 14 июня 2011

Вы столкнулись с ограничениями основного протокола X11; технически было бы вполне возможно добавить к нему сглаживание, но этого не произошло.

Вместо этого есть расширение XRender, которое предоставляет хорошие сглаженные примитивы. Вы также захотите заглянуть в Xft для рендеринга сглаженного текста с использованием векторных шрифтов.

0 голосов
/ 02 мая 2017

Вы можете свернуть свой собственный алгоритм сглаживания.У вас есть только 2 примитива, которые вам нужны: 1) функция для рисования точек TrueColor (а именно, xcb_poly_point () , если вы используете XCB ),и 2) для петель.

...