C# 使用CreatePageVisual和TransformToVisual将点从一个画布转换为另一个画布
我有一段使用DocumentToolkit打印XPS文档的代码: 受保护的重写UIElement CreatePageVisual(FixedPage FixedPage,大小maxSize) { Canvas page=(Canvas)base.CreatePageVisual(fixedPage,maxSize)C# 使用CreatePageVisual和TransformToVisual将点从一个画布转换为另一个画布,c#,silverlight,C#,Silverlight,我有一段使用DocumentToolkit打印XPS文档的代码: 受保护的重写UIElement CreatePageVisual(FixedPage FixedPage,大小maxSize) { Canvas page=(Canvas)base.CreatePageVisual(fixedPage,maxSize) 我遇到了一个错误,我不确定它是否会起作用。有什么建议吗?事实证明我有两件事做错了。首先,我的TransformToVisual(页面)应该是TransformToVisual(页面
我遇到了一个错误,我不确定它是否会起作用。有什么建议吗?事实证明我有两件事做错了。首先,我的TransformToVisual(页面)应该是TransformToVisual(页面.Parent)。最终我遇到的真正问题是,我应该将我的克隆添加到fixedPage而不是page 本质上,我是在画布内部的画布上添加文本块。我试图转换为Visual来修复它,但最终我删除了所有这些内容,并将我的项目添加到fixedPage
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);
}
}
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);