私は少し問題があります。私は画像を自分のグラフにエクスポートしたい。私はそれがbeto-rodriguez(here)によって与えられたコードで可能であることを知っていました。ライブチャートで画像を表示する
しかし、私は問題がある、私は私が画面にそれを表示することによってできたことができない。上記の画像を参照してください。右下に、画像がpngに保存されています。そして、画像の左側には、私が望むところに表示されているすべてのパラメータを含むグラフがあります。
保存した画像に同じチャート(左側)を表示することは可能ですか? 実際には、画像を自動的にキャプチャ(コピー/ペースト)するためにスレッドを使用します。
正しい画像を表示するために設定する必要があるパラメータは何ですか。事前に
感謝。よろしくです。 よろしくお願いします。
*********************************私の後半repsonseて申し訳ありません編集
後。私はあなたが言ったことをしようとするが、私はそれを私が欲しいものにすることはできない。 私は私は何をすべきかを説明します: を私は別のクラス「GraphMaker」と呼ぶことができるクラス「MakeReport」があります。
MyGraph = new GraphMaker();
MyGraph = GiveAGraph(MyGraph);
とクラス「MakeReport」をサブといくつかの値を使用してチャートを完了しますプログラム "GiveAGraph()":
GraphData.SeriesCollection.Add(new RowSeries
{
Title = Criteria,
Values = DataValues,
ScalesYAt = Index,
DataLabels = true
});
"GiveAGRaph()"の最後。私は、「MyGraph.GiveAnImageFromChart()」で
// Chart to Image
MyGraph.GiveMeAnImageFromChart(); <-- to make a picture with the chart
// Show the graph
MyGraph.Show(); <-- for debug and test, i display it.
:
は今、私は私がイメージを作成し、テスト(およびデバッグ)のために、私はそれを表示するためにそれを使用したい場合は、表示するチャートの準備ができてい"MyGraph.Show()"と同じ結果を持っていません。画像(pngとして保存)は、表示されているグラフとは異なります。
"GraphMaker" クラスに含まれるサブプログラム "GiveAnImageFromChart" がある:
public void GiveMeAnImageFromChart()
{
var viewbox = new Viewbox();
myChart.Background = Brushes.White;
myChart.DataContext = this;
// myChart il faut tout mettre en paramètres
viewbox.Child = myChart;
viewbox.Measure(myChart.RenderSize);
viewbox.Arrange(new Rect(new Point(0, 0), myChart.RenderSize));
myChart.Update(true, true); //force chart redraw
viewbox.UpdateLayout();
SaveToPng(myChart, "chart.png");
//png file was created at the root directory.
}
"myChart" 変数はパブリックです。使用された "SaveToPng"プログラムは、あなたの例(here)から来ました。画像を保存するには
、私は次のような方法で試してみてください。では
public System.Drawing.Bitmap ControlToImage(Visual target, double dpiX, double dpiY)
{
if (target == null)
{
return null;
}
// render control content
Rect bounds = VisualTreeHelper.GetDescendantBounds(target);
Console.WriteLine("Bounds width = " + bounds.Width + " et bounds height = " + bounds.Height);
RenderTargetBitmap rtb = new RenderTargetBitmap((int)(bounds.Width * dpiX/96.0),
(int)(bounds.Height * dpiY/96.0),
dpiX,
dpiY,
PixelFormats.Pbgra32);
DrawingVisual dv = new DrawingVisual();
using (DrawingContext ctx = dv.RenderOpen())
{
VisualBrush vb = new VisualBrush(target);
ctx.DrawRectangle(vb, null, new Rect(new System.Windows.Point(), bounds.Size));
}
rtb.Render(dv);
//convert image format
MemoryStream stream = new MemoryStream();
BitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
encoder.Save(stream);
return new System.Drawing.Bitmap(stream);
}
:この方法で
Bitmap ImageChart = MyGraph.ControlToImage(MyGraph, MyGraph.Width, MyGraph.Height);
、私は "bounds.Width" と「境界ため、エラーを持っています。Height "は-8に等しい。そして最後に、私は変換するためのチャートを持っていません。
私は "ControlImage"に間違った "視覚的ターゲット"を与えて、何かが恋しいと思いますが、何が分からないのでしょうか?詳細が必要な場合は、私に尋ねてください。 ご協力いただきありがとうございます。
PS:英語にすみませます。私を訂正するのをためらってください。