Wpf CompositeTransform是否仅用于silverlight?

Wpf CompositeTransform是否仅用于silverlight?,wpf,silverlight,Wpf,Silverlight,CompositeTransform仅用于silverlight?。我们是否可以在WPF或任何等效的替代品中使用它?WPF中没有复合转换,但是有一个转换组。因此,一个等价的替代品是一个TransformGroup,它包含ScaleTransform,SkewTransform,RotateTransform和translateransform。如果您对代码清洁度有分析,这里有一个更好的解决方案: 这对眼睛来说很容易,因为它只返回一个TransformGroup,所以您仍然可以使用Blend d

CompositeTransform仅用于silverlight?。我们是否可以在WPF或任何等效的替代品中使用它?

WPF中没有
复合转换
,但是有一个
转换组
。因此,一个等价的替代品是一个
TransformGroup
,它包含
ScaleTransform
SkewTransform
RotateTransform
translateransform

如果您对代码清洁度有分析,这里有一个更好的解决方案:

这对眼睛来说很容易,因为它只返回一个TransformGroup,所以您仍然可以使用Blend designer在变换上设置动画

<Rectangle Width="100" Height="100" Fill="LightGreen"
       RenderTransform="{data:CompositeTransform ScaleX=2.5, ScaleY=1, SkewX=-60, Rotation=145}"
       RenderTransformOrigin="0.5,0.5" />

var Trans=(CompositeTransform)Btn_showDetail.RenderTransform;如果(Trans.Rotation>0){VisualStateManager.GoToState(这个“Hide”,true);}您认为如果有人为WPF实现了他们自己的,它会工作吗?(或者反编译并使用Silverlight提供的?)如何从
TransformGroup
获取
TranslateTransform
值?
public class CompositeTransformExtension : MarkupExtension
{
    public double CenterX
    {
        get { return _scale.CenterX; }
        set
        {
            _scale.CenterX = value;
            _skew.CenterX = value;
            _rotate.CenterX = value;

        }
    }

    public double CenterY
    {
        get { return _scale.CenterY; }
        set
        {
            _scale.CenterY = value;
            _skew.CenterY = value;
            _rotate.CenterY = value;
        }
    }

    public double ScaleX
    {
        get { return _scale.ScaleX; }
        set { _scale.ScaleX = value; }
    }

    public double ScaleY
    {
        get { return _scale.ScaleY; }
        set { _scale.ScaleY = value; }
    }

    public double SkewX
    {
        get { return _skew.AngleX; }
        set { _skew.AngleX = value; }
    }

    public double SkewY
    {
        get { return _skew.AngleY; }
        set { _skew.AngleY = value; }
    }

    public double Rotation
    {
        get { return _rotate.Angle; }
        set { _rotate.Angle = value; }
    }

    public double TranslateX
    {
        get { return _translate.X; }
        set { _translate.X = value; }
    }

    public double TranslateY
    {
        get { return _translate.Y; }
        set { _translate.Y = value; }
    }

    private ScaleTransform _scale = new ScaleTransform();
    private SkewTransform _skew = new SkewTransform();
    private RotateTransform _rotate = new RotateTransform();
    private TranslateTransform _translate = new TranslateTransform();

    public CompositeTransformExtension()
    {
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        var group = new TransformGroup();

        group.Children.Add(_scale);
        group.Children.Add(_skew);
        group.Children.Add(_rotate);
        group.Children.Add(_translate);

        return group;
    }
}