我有一条路径(看起来像一个椭圆形):
<Path Data="Bla Bla"/>
现在我想将路径的宽度和高度缩放到我喜欢的任何位置。我找到了一种方法:
<Grid Width="400" Height="50">
<Viewbox Stretch="Fill">
<Path Data="Bla Bla"/>
</Viewbox>
</Grid>
这有效,但我想知道这是否是最有效的方法呢? (我必须引入一个网格和视图框来执行此操作)
答案 0 :(得分:21)
缩放路径的另一种方法是使用RenderTransform
或LayoutTransform
<Path Data="Bla Bla"
RenderTransformOrigin="0.5, 0.5">
<Path.RenderTransform>
<ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
</Path.RenderTransform>
</Path>
答案 1 :(得分:13)
只是FYI,因为ViewBox在其中使用了ScaleTransform,它基本上与性能一样好。
答案 2 :(得分:7)
您基本上有3种方法来缩放路径:
方法1.和2.将产生相同的结果,而3.略有不同,因为形状将改变大小,但笔划将保持原始厚度(因此它不是真正的缩放)。
方法1.当你想要填充给定大小的区域时,它是合适的。另一方面,方法2对于将路径放大(或减小)给定量是有用的,例如。原始尺寸的两倍。
答案 3 :(得分:1)
kUIWEB:kArrow mArrow = new kUIWEB:kArrow();
mArrow.Width=30;
mArrow.Height=30;
mArrow.RenderTransformOrigin=new Point(0.5, 0.5);
ScaleTransform myScaleTransform = new ScaleTransform();
myScaleTransform.ScaleY = 1;
myScaleTransform.ScaleX = 1;
RotateTransform myRotateTransform = new RotateTransform();
myRotateTransform.Angle = 0;
TranslateTransform myTranslate = new TranslateTransform ();
myTranslate.X = 12;
myTranslate.X = 15;
SkewTransform mySkew = new SkewTransform ();
mySkew.AngleX=0;
mySkew.AngleY=0;
// Create a TransformGroup to contain the transforms
// and add the transforms to it.
TransformGroup myTransformGroup = new TransformGroup();
myTransformGroup.Children.Add(myScaleTransform);
myTransformGroup.Children.Add(myRotateTransform);
myTransformGroup.Children.Add(myTranslate);
myTransformGroup.Children.Add(mySkew);
// Associate the transforms to the object
mArrow.RenderTransform = myTransformGroup;