レポート中に生成されたチャートを印刷しようとしています。グラフをDocumentPaginatorドキュメントに配置することはできますが、ページに合わせてグラフのサイズを変更するのに問題があります。レポートプログラムのサイズを変更すると、グラフのサイズが変更され、グラフのスケーリングに影響することに気付きました。この認識は、チャートActualWidth
とActualHeight
がスケーリングに直接リンクされていることを私に示しました。
私は試した:
myChart.Width = newWidth;
myChart.Height = newHeight;
Measure(myChart.RenderSize);
Arrange(new Rect(0, 0, newWidth, newHeight));
しかし、これにより、レポートプログラムの視覚的なグラフのサイズが変更され、印刷可能なグラフは2回目の印刷まで新しいサイズに変更されませんでした。
myChartがreportChartに接続されていることに気づき、reportChartをmyChartにコピー/クローン化しようとしました。
私は試した:
public class Copy<T>
{
public static T DeepCopy<T>(T element)
{
string xaml = XamlWriter.Save(element);
StringReader xamlString = new StringReader(xaml);
XmlTextReader xmlTextReader = new XmlTextReader(xamlString);
var DeepCopyobject = (T)XamlReader.Load(xmlTextReader);
return DeepCopyobject;
}
}
また
myChart = XamlReader.Parse(XamlWriter.Save(reportChart.DataContext)) as Chart
ただし、string xaml = XamlWriter.Save(element);
時間がかかりすぎて、両方ともスタックオーバーフローが発生します。
使ってます
myChart = new Chart() { DataContext = reportChart.DataContext }
コピーを作成しますが、ActualWidthとActualHeightが「0」に遭遇するため、グラフのDataContextが正しくコピーされたかどうかがわかりません。
を使用してチャートのサイズを変更しました
myChart.Width = newWidth;
myChart.Height = newHeight;
myChart.Measure(new System.Windows.Size(newWidth, newHeight));
myChart.Arrange(new Rect(0, 0, newWidth, newHeight));
または、グラフのActualWidthとActualHeightを言って、希望のサイズに更新しますが、グラフのあるべき場所に黒い画像が表示されます。
では、選択した用紙サイズに適切に拡大縮小されたグラフを印刷するにはどうすればよいですか?