4

C#/WPF アプリケーションには、画像に保存する必要がある DataChart オブジェクトがあります。現在、オブジェクトは固定ドキュメントに追加され、次のコードを使用してその固定ドキュメントに正しく表示されます。

VisualBrush chartBrush = new VisualBrush(chart);
Rectangle chartRect = new Rectangle();
chartRect.Height = chartClone.Height;
chartRect.Width = chartClone.Width;
chartRect.Fill = chartBrush;
AddBlockUIElement(chartRect, textAlignment);

ただし、固定ドキュメントにブロックとして追加するのではなく、画像をディスクに保存するだけで済みます。私は次のことを試しました:

RenderTargetBitmap bmp = new RenderTargetBitmap((int)chart.Width, (int)chart.Height, 96, 96, PixelFormats.Default);
bmp.Render(chart);
PngBitmapEncoder image = new PngBitmapEncoder();
image.Frames.Add(BitmapFrame.Create(bmp));
using (Stream fs = File.Create("TestImage.png"))
{
  image.Save(fs);
  fs.Close();
}

ただし、これにより、グラフのサイズで黒一色の画像が表示されるだけで、その理由がわかりません。

私の質問は、DataChart オブジェクトを保存できる PNG または BMP 画像に変換するより良い方法を知っている人はいますか? VisualBrush または Rectangle からイメージへの取得を検索しようとしましたが、上記以外に、必要なことをしているように見えるものは見つかりませんでした。

本当にありがとう!

4

2 に答える 2

-1

以下のコードで作業できるかどうかを確認してください。

VisualBrush target = new VisualBrush(element);
DrawingVisual visual = new DrawingVisual();
DrawingContext dc = visual.RenderOpen();
dc.DrawRectangle(target, null, new Rect(0, 0, 
    width, 
    height));
dc.Close();

RenderTargetBitmap bmp = new RenderTargetBitmap(
    (int)width,
    (int)height, 96, 96, PixelFormats.Pbgra32);
bmp.Render(visual); 
于 2011-06-01T17:09:24.663 に答える
-1

この行を置き換えます

image.Frames.Add(BitmapFrame.Create(BitmapRender));

そのような

image.Frames.Add(BitmapFrame.Create(bmp));
于 2011-06-01T17:11:22.883 に答える