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