0
我有一個DVC圖表顯示數據。我創建了一個按鈕來導出圖形。PngBitmapEncoder創建一個「空」文件
下面是代碼:
private void btnExptGraph_Click(object sender, RoutedEventArgs e)
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)mcChart.ActualWidth, (int)mcChart.ActualHeight,96d, 96d, PixelFormats.Pbgra32);
renderBitmap.Render(mcChart);
Console.WriteLine(renderBitmap.ToString());
//JpegBitmapEncoder encode = new JpegBitmapEncoder();
PngBitmapEncoder encode = new PngBitmapEncoder();
encode.Frames.Add(BitmapFrame.Create(renderBitmap));
string filename = "test.bmp";
FileStream fout = new FileStream(filename, FileMode.Create);
encode.Save(fout);
MessageBox.Show("File Saved Successfully");
fout.Close();
}
所以我的問題是,這與我的文件基本上是空的異常正確執行。我只有一個1KB大小的文件,沒有圖形。
我看過MSDN文檔和其他堆棧溢出示例。他們都遵循這種形式,人們聲稱它的工作原理。我已經運行了一個調試器,renderBitmap對象在所有必要的屬性中獲得了正確的高度和重量值。有任何想法嗎?
只是要清楚,JpegBitmapEncoder也沒有產生預期的結果? – Clemens
'mcChart.ActualWidth'和'mcChart.ActualHeight'是否大於'0'?您的圖表控件或者需要在屏幕上實際可見,以便能夠將其渲染到RenderTargetBitmap,或者您必須調用Measure()和Arrange()。 – bitbonk
你是對的,JpegBitmapEncoder也沒有產生期望的結果。我得到了一個2KB的文件,但我相信這只是因爲jpeg文件無論如何都比較大。 是的mcChart.ActualWidth和mcChart.actualHeight大於0.它們分別是200和300左右。通過在屏幕上可見,我假定你的意思是我可以看到圖表?如果是這樣,是的。 – SDSMTKyzer