Silverlightツールキットグラフから書き込み可能なビットマップを作成しようとすると問題が発生します。
textBlockを使用する場合、すべてが正常ですが、Chartを使用しようとすると、生成されたビットマップは空になります:(。
var data = new List<Point>(100);
for (int i = 0; i < 100; i++)
{
data.Add(new Point(i, Math.Sin(i * Math.PI / 50)));
}
Chart chart_ = new Chart()
{
Name = "Chart",
Width = 512,
Height = 512
};
LineSeries line = new LineSeries()
{
Name = "Line",
Title = "test",
IndependentValuePath = "X",
DependentValuePath = "Y",
ItemsSource = data
};
chart_.Series.Add(line);
このコードは、正弦波を含むチャートを作成します。それから私はそれからビットマップを作成しようとしています。
LayoutRoot.Children.Add(chart_); // I tried to add chart_ to visual tree, It doesn't help
//creates bitmap
ScaleTransform t = new ScaleTransform() { ScaleX = 1.0, ScaleY = 1.0 };
//bitmap = new WriteableBitmap(chart_, t); Tried it also with this way
bitmap = new WriteableBitmap(512, 512);
bitmap.Render(chart_, t);
texture = new Texture2D(GraphicsDeviceManager.Current.GraphicsDevice, bitmap.PixelWidth, bitmap.PixelHeight, false, SurfaceFormat.Color);
bitmap.CopyTo(texture);
このコードはすべて空のビットマップを作成しますが、TextBlockまたはEllipseなどのプリミティブを使用すると、すべてが機能します。確かに、コード生成チャートは問題ありません。原因チャートはSilverlightコントロールで問題なく生成されます。
編集: 私はこの方法でビットマップを作成しようとしましたが、役に立ちません。
chart_.InvalidateMeasure();
bitmap = new WriteableBitmap(512, 512);
bitmap.Render(chart_, null);
bitmap.Invalidate();
編集2: グラフをビジュアルツリーに入れたくない。アプリケーションのXNA部分で使用するよりも、イメージを生成する必要があります。