【问题标题】:Rotate canvas should not rotate it's children旋转画布不应该旋转它的孩子
【发布时间】:2011-05-02 08:29:15
【问题描述】:

有没有办法只旋转画布而不旋转它的孩子,比如图像、几何等?任何人都可以提供的任何帮助将不胜感激。

非常感谢 拉提什

【问题讨论】:

    标签: wpf


    【解决方案1】:

    Kent Boogarts 的建议也是我最初的想法,实现起来并不难,因为可以直接绑定到 Canvas 的 Inverse 变换:

    <ItemsControl>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas>
                    <Canvas.RenderTransform>
                        <RotateTransform />
                    </Canvas.RenderTransform>
                </Canvas>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ContentControl Content="{Binding}"
                                RenderTransform="{Binding RelativeSource={RelativeSource AncestorType=Canvas},
                                                          Path=RenderTransform.Inverse}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
    

    【讨论】:

    • 谢谢老兄,这(RenderTransform.Inverse)是我想要的答案。旋转画布时效果很好。但无论如何,在将转换转换为画布时不要应用逆?当旋转+平移应用(旋转然后移动)到画布时,它应该只反转旋转?
    • 那么你必须使用一个TransformGroup,只需将绑定路径更改为RenderTransform.Children[1].Inverse,当然索引需要指向正确的变换。
    • 是的..亲爱的朋友,你是绝对正确的..我使用了 RenderTransform.Children[1].Inverse 并且它有效..再次感谢老兄。
    【解决方案2】:

    我认为唯一的方法是旋转 Canvas 并将其子项旋转到另一个方向。

    【讨论】:

      【解决方案3】:

      不,除非您对每个孩子应用相反的转换,否则无法做到这一点。也许如果你解释一下你想要达到的目标,可能会有更简单的方法来做到这一点。

      【讨论】:

        猜你喜欢
        • 2016-11-22
        • 2015-10-01
        • 2014-02-01
        • 2016-07-29
        • 1970-01-01
        • 2020-02-27
        • 2022-10-23
        • 2011-07-06
        • 1970-01-01
        相关资源
        最近更新 更多