如何旋转元素/框架元素?

时间:2014-09-10 11:38:35

标签: c# wpf kinect

我觉得这应该很简单,但我无法围绕一个点旋转元素。

我可以毫不费力地设置点的位置,但似乎不是一个简单的旋转方式。

    private void SetPosition(FrameworkElement element, ColorImagePoint point)
    {
        //Divid width and height by 2 to centre
        Canvas.SetLeft(element, point.X - element.Width / 2); //X axis
        Canvas.SetTop(element, point.Y - element.Height / 2); //Y axis
        //I want to do something like this here:
        Canvas.SetRotate(element, about_this_point, by_this_angle)
    }

在我的画布上,在图片属性中可以选择旋转它,但我无法弄清楚如何在代码中执行此操作,以便可以动态完成。

感谢。

1 个答案:

答案 0 :(得分:0)

这里是一个简单的XAML旋转示例。

<Image Height="100" Width="100" Source="{StaticResource  Image_Key}" >
    <Image.RenderTransform>
        <RotateTransform CenterX="50" CenterY="50" Angle="45" />
    </Image.RenderTransform>
</Image>

这只是根据图像中的50,50点应用旋转。因为尺寸设置为100 x 100,这意味着它是一个中心旋转。您可以轻松地将所有这些值与您的模型绑定。

因此,从那里添加格式是定义,但添加代码很简单:

RotateTransform myRotateTransform = new RotateTransform(); 
myRotateTransform.Angle = 45; 
myImage.RenderTransform = myRotateTransform;

或者,如果您需要的不仅仅是轮换,请创建TransformGroup对象,使用TransformGroup.Children.Add([transformation]);向其添加不同的转换,并将RenderTransform设置为TransformGroup而不是瞧