导出代码创建的具有自定义图像的Steema图表
本文关键字:自定义 图像 Steema 图表 代码 创建 | 更新日期: 2023-09-27 18:29:29
是否有某种方法可以在不通过"屏幕绘制"的情况下导出带有自定义图形的Steema图表
我正在尝试导出一个尚未在屏幕上绘制并带有一些自定义绘图的Steema TChart
。我找到了Graphics3D
对象,但当我尝试使用它时,它会抛出一个NullReferenceException
:
在Steema.TeeChart.WPF.Drawing.Graphics3DWPF.Draw(Rect-destRect,Rect-srcRect,BitmapSource图像,布尔透明)
在Steema.TeeChart.WPF.Drawing.Graphics3D.Draw(Rect r,BitmapSource图像,布尔透明)
在WpfSteemaApplication.MainWindowViewModel.SaveImage()…
我发现的关于自定义图形的唯一其他信息是在事件BeginDraw
和AfterDraw
中,在我导出图像之前似乎不会调用它们
然而,其他一切看起来都很好,这只是我需要的自定义图像。
private void SaveImage()
{
BitmapSource bitmap = new BitmapImage(new Uri("pack://application:,,,/button.png"));
TChart chart = new TChart();
JPEGFormat jpegFormat = chart.Export.Image.JPEG;
// This throws an exception when uncommented.
//chart.Graphics3D.Draw(new Rect(0, 0, 100, 100), bitmap, true);
Line line = new Line();
line.FillSampleValues();
chart.Series.Add(line);
jpegFormat.Width = 1024;
jpegFormat.Height = 340;
jpegFormat.Quality = 100;
jpegFormat.Save("C:''Temp''steemachart.jpg");
}
我在图表上找到了DoInvalidate()
方法,该方法反过来调用AfterDraw
。之后导出图像时,图像和图表都在图像中呈现
private void SaveImage()
{
TChart chart = new TChart();
JPEGFormat jpegFormat = chart.Export.Image.JPEG;
Line line = new Line();
line.FillSampleValues();
chart.Series.Add(line);
jpegFormat.Width = 1024;
jpegFormat.Height = 340;
jpegFormat.Quality = 100;
chart.AfterDraw += OnAfterDraw;
chart.DoInvalidate();
jpegFormat.Save("C:''Temp''steemachart.jpg");
}
private void OnAfterDraw(object sender, Graphics3D g)
{
BitmapSource bitmap = new BitmapImage(new Uri("pack://application:,,,/button.png"));
g.Draw(new Rect(0, 0, bitmap.Width, bitmap.Height), bitmap, true);
}