からIは、XPS文書を印刷するDocumentToolkitを使用するコードのこのビットを有する:変換点CreatePageVisual有する別のキャンバス、及びTransformToVisual
保護オーバーライドのUIElement CreatePageVisual(のFixedPageのFixedPage、サイズmaxSizeの) { キャンバスページ=(キャンバス)base.CreatePageVisual(fixedPage、maxSize);
foreach (Tuple<int, UIElement, int, int> t in AllFields.Where(f => f.Item1 == fixedPage.PageNumber))
{
var clone = t.Item2.Clone();
Canvas.SetLeft(clone, t.Item3 * 1.335);
Canvas.SetTop(clone, (790 - t.Item4) * 1.335);
page.Children.Add(clone);
}
}
t.Item2とt.Item3は、Canvas上のUIElementsのX、Y座標です。これらの座標で完全に表示されますが、上記のオーバーライドを使用してドキュメントを印刷する場合は、UIElementsがキャンバス上に「ストレッチ」されています。左上の方が正解に近いですが、ページを横切ったり、ページを横切ったりすると間違っています。
私はTransformVisualを使用して座標を変換しようとしましたが、運:
GeneralTransform generalTransform = t.Item2.TransformToVisual(page);
Point childToParentCoordinates = generalTransform.Transform(new Point(t.Item3 * 1.335, (790 - t.Item4) * 1.335));
Canvas.SetLeft(clone, childToParentCoordinates.X);
Canvas.SetTop(clone, childToParentCoordinates.Y);
私はエラーを取得していない、と私はそれが動作するかはわかりません。助言がありますか?