在WPF中转换自定义Shape

时间:2013-11-10 13:46:30

标签: c# .net wpf geometry shape

我在WPF中有一个自定义形状,它在DefiningGeometry覆盖中创建两个矩形,并返回GeometryGroup,如下所示:

protected override System.Windows.Media.Geometry DefiningGeometry
{
    get
    {
        System.Windows.Media.GeometryGroup group = null;
        System.Windows.Media.RectangleGeometry rectangle = null;

        group = new System.Windows.Media.GeometryGroup();

        if (this.Rectangle.IsEmpty)
        {
            group.Children.Add(System.Windows.Media.Geometry.Empty);
        }
        else
        {
            rectangle = new System.Windows.Media.RectangleGeometry(new System.Windows.Rect(this.Width * 0.1, this.Height - (this.Height * 0.1), this.Width * 0.8, this.Height * 0.1), 10, this.Height * 0.1);
            group.Children.Add(rectangle);

            rectangle = new System.Windows.Media.RectangleGeometry(new System.Windows.Rect(this.Width * 0.1, this.Height - (this.Height * 0.1), this.Width * 0.8, this.Height * 0.1), 10, this.Height * 0.1);
            rectangle.Transform = new System.Windows.Media.RotateTransform(this.Tilt, this.Width / 2D, this.Height / 2D);
            group.Children.Add(rectangle);
        }

        return (group);
    }
}

问题是我只想对第二个矩形应用变换,但是当我如上所示那样做时,它也会转换组中的其他几何。

这应该代表一个静态条和一个旋转的动画(因此转换)。任何建议都会有所帮助。

UPDATE :我对两个矩形上发生的旋转变换都错了。轮换只发生在一个。但由于旋转,画布似乎会转换,因为第一个矩形也会移动(不旋转)。知道这里发生了什么吗?

这是一个动画GIF。等待两个滑块一次上下移动。

Animated Gif

这里唯一改变的是this.Tilt从-45到+45度的值。

0 个答案:

没有答案