1

オーバーライドで 2 つの四角形を作成し、次DefiningGeometryのように両方を返すWPF のカスタム形状があります。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);
    }
}

問題は、2 番目の四角形にのみ変換を適用したいということですが、上図のようにそれを行うと、グループ内の他のジオメトリも変換されます。

これは、1 つの静的バーと 1 つの回転 (つまり、変換) を持つアニメーションを表すと想定されています。どんなアドバイスも役に立ちます。

更新:両方の長方形で回転変換が行われていることについて、私は間違っていました。回転は 1 つのみで行われます。しかし、その回転により、最初の長方形も (回転せずに) 移動するため、キャンバスは移動するように見えます。ここで何が起こっているのか分かりますか?

こちらがアニメーションGIFです。両方のスライダーが同時に上下するのを待ちます。

アニメーションGIF

ここで変更するのは、this.Tilt-45 ~ +45 度の値だけです。

4

0 に答える 0