2010-02-24 28 views
2

我使用Silverlight的WriteableBitmap的命令來渲染「餅圖」使用下面的代碼。Silverlight的可寫的位圖

Chart GetChart() 
    { 
     Chart newChart = new Chart() { Width = 100.0, 
             Height = 100.0 }; 

     PieSeries pieSeries = new PieSeries(); 
     pieSeries.SetBinding(PieSeries.ItemsSourceProperty, new Binding()); 
     pieSeries.DependentValueBinding = new Binding("Value"); 
     pieSeries.IndependentValueBinding = new Binding("Key"); 
     pieSeries.AnimationSequence = AnimationSequence.FirstToLast; 
     pieSeries.IsSelectionEnabled = true; 
     newChart.Series.Add(pieSeries); 

     newChart.SetValue(Chart.DataContextProperty, new KeyValuePair<string, int>[] 
          { 
           new KeyValuePair<string, int>("Work", 9), 
           new KeyValuePair<string, int>("Driving", 2), 
           new KeyValuePair<string, int>("Family", 4), 
           new KeyValuePair<string, int>("Sleep", 8), 
           new KeyValuePair<string, int>("Friends", 1) 
          }); 
     return newChart; 
    } 

    WriteableBitmap bmapPreviewCanvas = new WriteableBitmap(GetChart, null); 

我期待的結果是帶有PieChart的位圖。我得到的是一個背景沒有任何PieChart的位圖。

的問題是:我應該怎麼做才能在變量「bmapPreviewCanvas」渲染餅圖?

編輯:這是否有東西做的ANIMATIONSEQUENCE?

回答

5

我相信你的問題是,圖表控件的情況下,你要創建一個位圖的不是視覺上的樹。

我自己實際上沒有嘗試過,但我相信如果UIElement不是可視樹的一部分,您必須明確使用WritableBitmap類的Render() method。您還必須先調用元素上的InvalidateMeasure(),之後再調用WritableBitmap上的Render()和Invalidate()以實際渲染位圖。

從MSDN文檔:

調用此方法後,你必須調用invalidate以呈現位圖。

這種方法不支持不屬於可視化樹的一部分的UIElement對象。調用Render之前,您需要調用Measure和Arrange UEElement對象,這些對象不在可視化樹中。

我想嘗試,而不是執行以下操作:

var chart = GetChart(); 
chart.InvalidateMeasure(); 
WriteableBitmap bmapPreviewCanvas = new WriteableBitmap(chart.Width, chart.Height); 
bmpaPreviewCanvas.Render(chart, null); 
bmapPreviewCanvas.Invalidate(); 
+0

丹,你是正確的再認識。如果將它添加到Canvas或Visual Tree中,我會看到正在生成的位圖。謝謝。 我正在進一步探討這個問題。我在ImageBrush中使用渲染的圖像,並嘗試用該圖像填充矩形。任何想法爲什麼矩形不會顯示圖像? – kanchirk 2010-02-25 14:40:59

+0

我有沒有看到更多的代碼不知道,但我沒有找到一個可能的WritableBitmap /圖像刷錯誤後:爲 http://forums.silverlight.net/forums/p/110869/261935.aspx – 2010-02-25 20:31:49

+0

丹,謝謝鏈接。我在您發佈的同一時間也遇到了相同的鏈接。似乎這是SL3中的一個已知問題。感謝您的幫助。 – kanchirk 2010-02-28 18:21:03