線條和曲線的反鋸齒功能
當您使用 GDI+ 繪製線條時,您會提供線條的起點和終點,但不需要提供線條上個別像素的任何資訊。 GDI+ 可與顯示驅動程式軟體搭配運作,以判斷要特定顯示裝置上顯示線條時,將開啟哪些像素。
別名
請考慮從點 (4, 2) 到點 (16, 10) 的紅色線條。 假設座標系統的原點在左上角,而測量單位是像素。 此外,假設 x 軸指向右邊,而 y 軸指向下方。 下圖顯示在多色背景上繪製的紅色線條的放大檢視。
線條,無消除鋸齒AboutGdip02_Art33
用來呈現線條的紅色像素不透明。 線條中沒有部分透明像素。 這種類型的線條呈現讓線條的外觀參差不齊,線條看起來有點像樓梯。 這種以樓梯代表線條的技術稱為鋸齒:樓梯是理論線條的別名。
消除鋸齒
呈現線條更複雜的技術涉及使用部分透明像素以及不透明像素。 像素會設定為純紅色,或設定為紅色和背景色彩的一些混合,視它們與線條的距離而定。 這種類型的呈現稱為消除鋸齒,並產生人眼看起來更平滑的線條。 下圖顯示特定像素如何與背景混合,以產生消除鋸齒的線條。
將線條消除鋸齒AboutGdip02_Art34
消除鋸齒,也稱為平滑化,也可以套用至曲線。 下圖顯示平滑橢圓形的放大檢視。
將曲線消除鋸齒AboutGdip02_Art35
下圖顯示實際大小的相同橢圓形,一次不使用消除鋸齒,一次使用消除鋸齒。
消除鋸齒範例AboutGdip02_Art36
若要繪製使用消除鋸齒的線條和曲線,請建立 Graphics 類別的實例,並將其 SmoothingMode 屬性設定為 AntiAlias 或 HighQuality。 然後呼叫同一個 Graphics 類別的其中一個繪圖方法。
myGraphics.SmoothingMode = SmoothingMode.AntiAlias;
myGraphics.DrawLine(myPen, 0, 0, 12, 8);
myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)