【问题标题】:Can all of a UIElement RenderTransform effected properties be copied into a new Element?是否可以将所有受 UIElement RenderTransform 影响的属性复制到新元素中?
【发布时间】: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


【解决方案1】:

您根本不需要这样做。

只需设置元素的LayoutTransform 属性而不是其RenderTransform

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2012-05-21
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2016-07-14
    相关资源
    最近更新 更多