我有一些带有几个从面板类继承的cutom控件的canvas,在运行时使用rendertransform =(.5,.5)动态添加到它.但是当应用平移变换(50,50)并将其旋转100度时,它不会在其位置旋转,它以半径50旋转,为什么?我做错了什么吗?
转换不是可交换的,您应该在应用转换之前应用转动.
通常你有一个TransformGroup,那么你可以改变它的子节点的顺序,如果这不是一个选项,因为某些变换是从父节点"继承"的,你可以使用它们的反转来使先前的变换无效(在翻译的情况下)应该将目标移回原点),然后您可以将其旋转到原位,然后再次应用原始变换.
文档是你的朋友,以下是可以找到的内容TransformGroups:
在复合变换中,单个变换的顺序很重要.例如,如果首先旋转,然后缩放,然后平移,则会得到与先翻译,然后旋转,然后缩放相比不同的结果.顺序有意义的一个原因是旋转和缩放等变换是相对于坐标系的原点完成的.缩放以原点为中心的对象会产生与缩放已从原点移开的对象不同的结果.类似地,旋转以原点为中心的对象产生的结果与旋转远离原点的对象的结果不同.
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |