2
我在寫一個地圖控件,可以顯示幾何圖形的長凳。爲了更好的性能,我繪製使用DrawingVisual
S的我然後寫入一個RenderTargetBitmap
所有我的幾何結構示於下面的代碼:數據綁定性能問題
public class Map{
public ImageSource MapDrawingImage{get;set;}
private void RenderMap(){
MapDrawingImage= new RenderTargetBitmap(w, h, 96, 96, PixelFormats.Pbgra32);
foreach (Layer layer in map.Layers) {
System.Windows.Media.DrawingVisual layerDrawing = Render(layer, map);
MapDrawingImage.Render(layerDrawing);
}
}
}
爲了顯示在地圖上,在主窗口具有Image
控制其Source
是設置爲Map.MapDrawingImage
圖片源。要自動更新圖像,我使用以下數據綁定:
RenderOptions.SetBitmapScalingMode(mapImage, BitmapScalingMode.LowQuality);
// Map image binding
Binding mapBinding = new Binding();
mapBinding.Source = map;
mapBinding.Path = new PropertyPath("MapDrawingImage");
mapImage.SetBinding(System.Windows.Controls.Image.SourceProperty, mapBinding);
當地圖爲靜態時,此功能非常有效。但是,在地圖以每秒5到10次的速度更新的動態模式下,數據綁定似乎落後了一段時間,應用程序變慢。我搜索了很長時間,發現:
RenderTargetBitmap
不使用硬件加速,因此在渲染地圖時會導致一些延遲。- 數據綁定也可能導致一些延誤刷新地圖圖像
有沒有更好的方法來改善地圖性能(RenderTargetBitmap
替換,數據綁定改進)?
在此先感謝,
靜態圖像將是一個需要被鎖定的共享資源,它仍然會降低性能 – GETah 2011-12-20 21:16:54