程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 在WPF中 使用StreamGeometry提高性能。,wpfstreamgeometry

在WPF中 使用StreamGeometry提高性能。,wpfstreamgeometry

編輯:C#入門知識

在WPF中 使用StreamGeometry提高性能。,wpfstreamgeometry


     現在正在使用WPF開發一個股票K線圖圖表,性能考慮是最大的一方面。 每根柱子寬5像素,柱子和柱子之間的間隔3像素。

     一個1920*1080分辨率的屏幕,勢必要繪制超過200個柱子。如果選擇的繪制方案不先進,對圖表的繪制是有很大的性能影響的。

     任何圖形都由直線和曲線構成的。在WPF中,最底層的圖形的繪制級別是Geometry。

     在WPF中,使用DrawingContext的方法繪制一個直線,就內部創建了一個LineGeometry對象,繪制一個矩形,就內部創建了一個RectagleGeometry對象。

     所以使用傳統的DrawLine,DrawRectangle來繪制這些柱子是不科學的。因為 每一根柱子,包含一個矩形和一根直線。

    假設繪制200個柱子,每次要實例化200個LineGeometry對象以及200個RectangleGeometry對象。

     在拖動的時候,不停的實例化和回收Geometry對象,畫面的延遲是非常明顯的。

     那麼有沒有一種繪制方案 可以減少對象的產生呢。StreamGeometry!StreamGeometry的效率非常之高,因為他是直接 保存字節流繪制數據的。

     StreamGeometry的工作方式就類似於一台激光打印機,它可以隨意切換下一次繪制的開始坐標。

    仔細分析一下K線圖,會發現,K線圖是由兩種顏色的柱子組成的。由於DrawingContext一次只能提交一種顏色的填充以及繪制邊緣的命令。所以至少要繪制兩次。

    使用兩個StreamGeometry對象,首先繪制紅色,在繪制綠色,就可以繪制所有的柱子。

   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved