У меня проблема при попытке создать записываемую растровую форму из набора инструментов Silverlight Graph.
При использовании 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);
Весь этот код создает Empty Bitmap. Но когда я использую TextBlock или некоторые примитивы, такие как Ellipse, все работает. Я уверен, что с диаграммой генерации кода все в порядке, потому что диаграмма генерируется нормально в элементе управления Silverlight.
EDIT:
Я пытался создать растровое изображение таким образом, но это не помогло.
chart_.InvalidateMeasure();
bitmap = new WriteableBitmap(512, 512);
bitmap.Render(chart_, null);
bitmap.Invalidate();
РЕДАКТИРОВАТЬ 2:
Я не хочу, чтобы график был в визуальном дереве. Мне просто нужно сгенерировать его изображение, а затем использовать его в XNA-части моего приложения.