書き込み可能なビットマップフォームSilverlightツールキットグラフを作成しようとすると問題が発生します。WriteableBitmapフォームチャートの問題を作成する
のTextBlockを使用する場合は、すべてが正常ですが、チャートを使用しようとした後、生成されたビットマップは空:(ある。
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);
このコードは、それに正弦波でチャートを作成します。そして、Imはそれからビットマップを作成しようとしています。
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);
すべてこのコードは、空の作成Bitmap.But私はTextBlockのか、楕円のようないくつかのプリミティブを使用する場合、すべての作品。イム必ず、チャートを生成するコードは、原因チャートをSilverlightコントロールに細かい生成され、罰金です。
編集: この方法でビットマップを作成しようとしましたが、役に立たないです。
chart_.InvalidateMeasure();
bitmap = new WriteableBitmap(512, 512);
bitmap.Render(chart_, null);
bitmap.Invalidate();
EDIT 2: 私はグラフがビジュアルツリーになりたくありません。私はアプリケーションのXNAの部分でそれを使用するよりも、そのイメージを生成する必要があります。
助けてくれてありがとうございます。もう一度やり直してください。私はNuGetからChartingパッケージを使ってみましたが、このパッケージではNo Chart(全体グリッドは白です)が得られました。インストールされたSLツールキットから 'System.Windows.Controls.DataVisualization.Toolkit'への参照を使用したとき、Chartはうまく見えますが、生成されたイメージは完全に透明です。 コードを実行しているとき、あなたは何を見ていますか?:) は(PIX!= 0)場合、デバッグ 'foreachの(bitmap.Pixels中のvar PIX) { に整列するあなたにこのコードを追加して、ブレークポイントを追加しよう Debug.WriteLine( "ゼロ以外"); } ' –