WPF:扩展路径的正确方法?

我有一条路(看起来像一个椭圆形):

 

现在我想将路径的宽度和高度缩放到我喜欢的任何位置。 我找到了一个方法:

      

这有效,但我想知道这是否是最有效的方法呢? (我不得不引入网格和视图框来执行此操作)

缩放路径的另一种方法是使用RenderTransformLayoutTransform

      

仅供参考,因为ViewBox在其中使用了ScaleTransform,它基本上与性能一样好。

你基本上有3种方法来扩展Path:

  1. 将其包装到ViewBox中
  2. 应用ScaleTransform
  3. 明确设置宽度和高度

方法1.和2.将产生相同的结果,而3.略有不同,因为形状将改变大小,但笔划将保持原始厚度(所以它不是真正的缩放)。

方法1.当您想要填充给定大小的区域时,这将是合适的。 另一方面,方法2将用于将路径放大(或减小)给定量,例如。 原始尺寸的两倍。

你可以编程,如http://social.msdn.microsoft.com/Forums/vstudio/en-US/a0d473fe-3235-4725-aa24-1ea9307752d3/how-to-rendertransform-in-code-behind-c ?论坛= WPF

 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;