Verileri görüntüleyen bir DVC Grafiğim var. Grafiği dışa aktarmak için bir düğme oluşturdum. PngBitmapEncoder bir "boş" dosya yaratıyor
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();
}
Yani benim mesele bu benim dosya temelde boş hariç düzgün yürütür olmasıdır: Burada
kodudur. Sadece 1 KB boyutunda bir dosyam var ve grafik yok.
MSDN belgelerine ve diğer yığın taşması örneklerine baktım. Hepsi bu formu takip ediyor ve insanlar işe yarayacağını iddia ediyorlar. Bir hata ayıklayıcısını kullanarak çalışıyorum ve renderBitmap nesnesi, gerekli tüm özelliklerde doğru yükseklik ve ağırlık değerlerini alıyor. Herhangi bir fikir?
Sadece açıklığa kavuşturmak için, JpegBitmapEncoder da istenen sonucu vermiyor? – Clemens
'mcChart.ActualWidth' ve' mcChart.ActualHeight' '0''dan daha büyük mü? Grafik kontrolünüzün ya bir 'RenderTargetBitmap' haline getirilmesi için ekranda gerçekten görünmesi gerekir ya da 'Measure()' ve 'Arrange()' olarak adlandırmanız gerekir. – bitbonk
Doğru, JpegBitmapEncoder istenilen sonucu üretmiyor. Bunun dışında 2KB'lik bir dosya alıyorum ama bunun sadece jpeg dosyalarının daha büyük olduğu için olduğuna inanıyorum. Ve evet mcChart.ActualWidth ve mcChart.actualHeight 0'dan büyüktür. Bunlar sırasıyla 200 ve 300 civarındadır. Ekranda görünerek, grafiği görebildiğimi mi kastediyorsunuz? Eğer öyleyse, evet. – SDSMTKyzer