C# 导出带有自定义图像的代码创建的Steema图表 是否有某种方法可以在不通过“屏幕绘制”的情况下导出带有自定义图形的Steema图表?
我正在尝试导出一个SteemaC# 导出带有自定义图像的代码创建的Steema图表 是否有某种方法可以在不通过“屏幕绘制”的情况下导出带有自定义图形的Steema图表?,c#,teechart,C#,Teechart,我正在尝试导出一个SteemaTChart,它没有在屏幕上绘制一些自定义图形。我找到了Graphics3D对象,但当我尝试使用它时,它抛出了一个NullReferenceException: 在Steema.TeeChart.WPF.Drawing.Graphics3DWPF.Draw(Rect-desect、Rect-srrect、位图源图像、布尔透明) 在Steema.TeeChart.WPF.Drawing.Graphics3D.Draw(Rect r,位图源图像,布尔透明) 在WpfSt
TChart
,它没有在屏幕上绘制一些自定义图形。我找到了Graphics3D
对象,但当我尝试使用它时,它抛出了一个NullReferenceException
:
在Steema.TeeChart.WPF.Drawing.Graphics3DWPF.Draw(Rect-desect、Rect-srrect、位图源图像、布尔透明)在Steema.TeeChart.WPF.Drawing.Graphics3D.Draw(Rect r,位图源图像,布尔透明)
在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);
}