【发布时间】:2018-11-09 16:26:18
【问题描述】:
我想复制具有基于 RenderTransform 的新属性的元素。例如,一个画布上的元素到另一个画布的 ScaleTransform。
private void CopyElement(UIElement elem, Canvas src, Canvas dest, Size scale, Vector offset) {
ScaleTransform resize = new ScaleTransform(scale.Width, scale.Height);
elem.LayoutTransform = resize;
UIElement newElem = CopyElement(src, elem);
Canvas.SetLeft(newElem, Canvas.GetLeft(elem) * scale.Width + offSet.X);
Canvas.SetTop(newElem, Canvas.GetTop(elem) * scale.Height + offSet.Y);
dest.Children.Add(newElem);
}
【问题讨论】:
-
你的意思是当有一个 ScaleTransform 时你想调整元素的大小,而对于一个 TranslateTransform 以某种方式“移动”它?轮换怎么样?
-
是的,永久转换,因此所有相关属性都可以缩放甚至自定义 DependencyProperties(即 LineThickness、Width、Height、FontSize...)
-
旋转是不可能的。缩放只是编程工作。用适当的因子乘以你需要的任何东西。
-
目前还不清楚您为什么要这样做。如果布局有问题,请设置元素的 LayoutTransform 而不是其 RenderTransform。
-
谢谢,这正是我需要使用的。
标签: c# wpf copy scaletransform layouttransform