在C#中,默認的直線式很難看的。鋸齒嚴重。
如圖:
代碼如下:
//創建一個Graphics對象
Graphics grp = CreateGraphics();
//繪製線條 起始窗口座標10,50 終止座標20,350 紅色,2px寬
grp.DrawLine(new Pen(Color.Red,2), new Point(10, 50), new Point(20, 350));
//釋放資源
grp.Dispose();
十分難看,就像狗牙咬的一樣。也就是所謂的鋸齒。(玩遊戲的不陌生吧,遊戲都能開啓抗鋸齒效果。)
那麼,C#是否有抗鋸齒的選項來解決這個問題呢?
當然有。
.NET自帶抗鋸齒選項,默認爲關閉。只需指定抗鋸齒效果開,即可獲得平滑的效果。
非常簡單,給Graphics設置如下屬性即可。
//設置抗鋸齒
grp.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
效果如圖:
左邊的是沒有開啓抗鋸齒的,右邊是開啓抗鋸齒後的效果:
效果明顯好多了吧,不過開啓抗鋸齒會對系統性能造成一點的影響。
表 SmoothingMode屬性值及說明
屬性值 | 說明 |
AntiAlias | 指定消除鋸齒的呈現 |
Default | 指定不消除鋸齒 |
HighQuality | 指定高質量、低速度呈現 |
HighSpeed | 指定高速度、低質量呈現 |
Invalid | 指定一個無效模式 |
None | 指定不消除鋸齒 |
看到csdn上有人說DrawCurve可以實現平滑效果,事實證明是不可能的。
如圖,第三條是DrawCurve來實現的。一樣的有鋸齒。DrawCurve原是用來生曲線的。
之所以有鋸齒,
抗鋸齒對系統性能影響的小測試:
同樣的位置使用抗鋸齒和不抗鋸齒生成10000次相同的線條。然後計算所花費的時間。
由此可見,當任務多的情況下,抗鋸齒還是對系統性能影響 比較明顯的。
轉自:http://hi.baidu.com/%CE%DE%E8%A6/blog/item/58d416d3be013a0b3af3cf3a.html