2011-06-13 59 views
2

我正在嘗試開發一套用於在Linux中創建GUI的自定義庫,包括窗口小部件,按鈕等。因此,我現在正在學習使用X11來創建用戶界面,以及其Xlib。我認識到在指定的位置有指定尺寸的大小的窗口,指定背景顏色,繪製點,矩形,圓弧的可能性。然而,當我畫了我的第一圈,我真的很失望的事實,該圈是沒有antialiased。我可以將每個像素看作一個正方形。使用Xlib啓用抗鋸齒

現在問題很簡單。有沒有什麼辦法可以告訴X:請在繪製之前對抗任何東西?或者我必須避免使用XDrawArc並使用爲圓的每個點調用XDrawPoint的自定義函數?或者有第三種解決方案?

在此先感謝。

回答

4

簡短答案是「否」。 Xlib不會執行反走樣。

較長的答案是「您可以使用更高級別的API,如開羅圖形」。沒有必要推出自己的。

+0

開羅Craphics可能會做客戶端光柵化和上傳。如果你想繼續使用X11,通常使用XRender。 – datenwolf 2011-06-14 09:44:53

+0

@datenwolf:我的理解是,開羅可以使用XRender。 – 2011-06-14 11:02:47

+0

是的,我可以這樣做,如果編譯有正確的選項。不過我有一個印象,OP希望儘可能接近X11。 – datenwolf 2011-06-14 11:47:23

2

您遇到的是X11核心協議的侷限性;從技術上來說,完全可以向它添加抗鋸齒功能,但是這沒有發生。

取而代之的是XRender擴展,它提供了很好的抗鋸齒基元。您還需要查看Xft以使用矢量字體渲染反鋸齒文本。

0

您可以推出自己的抗鋸齒算法。您只需要2個基元:1)繪製TrueColor點的函數(即,如果使用XCB,則爲xcb_poly_point());以及2)循環。