使用原点位于中心的椭圆 WPF

But*_*zke 3 c# wpf canvas ellipse

我有一个可以System.Windows.Shapes.EllipseCanvas面板中拖动、旋转和调整大小的程序。

要调整椭圆的大小并将其拖动到画布内并始终保持其居中,我需要每次纠正其原点,因为椭圆的原点位于左上角。

有办法让原点Ellipse默认在中心吗?

拖:

Canvas.SetTop(ellipse, newX - (ellipse.Height / 2));
Canvas.SetLeft(ellipse, newY - (ellipse.Width / 2));
Run Code Online (Sandbox Code Playgroud)

调整大小:

ellipse.Height = newHeight;
ellipse.Width = newWidth;
Run Code Online (Sandbox Code Playgroud)

旋转:

ellipse.RenderTransform = new RotateTransform(angle,(ellipse.Width/2),(ellipse.Height/2));
Run Code Online (Sandbox Code Playgroud)

Mik*_*bel 5

如果宽度和高度是固定的,最简单的解决方案是将椭圆设置RenderTransformTranslateTransformwithXY设置为负偏移,分别等于椭圆宽度和高度的一半:

<Ellipse Width="100" Height="100" Fill="Red">
  <Ellipse.RenderTransform>
    <TranslateTransform X="-50" Y="-50" />
  </Ellipse.RenderTransform>
</Ellipse>
Run Code Online (Sandbox Code Playgroud)

请注意,使用时需要注意的RenderTransform是变换不会应用于布局(并且您不能使用 a TranslateTransformLayoutTransform。由于它处理布局的方式,这不应该成为问题Canvas,尽管其他面板可能会出现问题。