使用Xlib启用抗锯齿功能

时间:2011-06-13 16:17:59

标签: drawing x11 antialiasing xlib

我正在尝试开发一套用于在Linux中创建GUI的自定义库,你知道,它们包括小部件,按钮等。所以我现在正在学习使用 X11创建用户界面和它的 Xlib 。我指出了一个指定大小的漂亮窗口,在指定的位置,指定的背景颜色,以及绘制点,矩形,弧的可能性。然而,当我画出我的第一个圆圈时,我对圆圈没有抗锯齿的事实感到非常失望。我可以看到每个像素都是正方形。

现在问题很简单。有没有办法告诉X:在绘制之前请先解决任何问题?或者我是否必须避免使用XDrawArc并使用为圆圈的每个点调用XDrawPoint的自定义函数?还是有第三种解决方案?

提前致谢。

3 个答案:

答案 0 :(得分:4)

简短的回答是“不”。 Xlib不做抗锯齿。

答案越长,“您可以使用更高级别的API,例如Cairo Graphics”。没有必要推出自己的。

答案 1 :(得分:2)

您遇到的是X11核心协议的限制;从技术上讲,为它添加抗锯齿是完全可能的,但这种情况并没有发生。

相反,它有XRender扩展,它提供了很好的抗锯齿基元。您还需要查看Xft以使用矢量字体渲染抗锯齿文本。

答案 2 :(得分:0)

您可以滚动自己的抗锯齿算法。你只需要2个原语:1)绘制TrueColor点的函数(即xcb_poly_point(),如果你正在使用XCB),2) for 循环。