我有一个非常简单的Visiblox表工作正常:渲染Visiblox图表上业务报告没有图形用户界面引发的NullReferenceException
<charts:Chart Grid.Row="1" Height="100" x:Name="VisiChart">
<charts:Chart.Series>
<charts:LineSeries/>
</charts:Chart.Series>
</charts:Chart>
设置我DataSeries
在后台代码:
VisiChart.Series[0].DataSeries = MyDataSeries;
就那么简单。
我可以使用此方法视觉元素抢位图:
private static RenderTargetBitmap AsBmpToClipboard(FrameworkElement element)
{
var width = (int)Math.Round(element.ActualWidth);
var height = (int)Math.Round(element.ActualHeight);
var bmpCopied = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Default);
var dv = new DrawingVisual();
using (var dc = dv.RenderOpen())
{
var vb = new VisualBrush(element);
dc.DrawRectangle(vb, null, new Rect(new Point(), new Size(width, height)));
}
bmpCopied.Render(dv);
Clipboard.SetImage(bmpCopied); // clipboard it for testing reasons
return bmpCopied;
}
现在,我在报告中或任何使用此位图。这工作。
问题来了:如果我想用没有GUI的图表图像创建我的报表(在服务器应用程序中,例如Windows服务或IIS中),我从图表中获得NullReferenceException
。
我所做的是创建包含图表的控件。然后我在控件上调用Measure()
以使其工作。这就是我得到:
NullReferenceException
at Visiblox.Charts.Chart.OnApplyTemplateInternal()
at Visiblox.Charts.ChartBase.OnApplyTemplate()
at System.Windows.FrameworkElement.ApplyTemplate()
我想我必须手动设置图表的模板,但我在哪里找到VisiBlox默认模板?我如何使用它们?还是有另一个问题?
非常感谢。
---编辑---
所以,我想,如果我叫一个控制台应用程序一个VisiBox图(或包含图表元素)的测量()我总是得到这个异常。所以,我也可以改变这个问题的标题如何在控制台应用程序