But*_*zke 3 c# wpf canvas ellipse
我有一个可以System.Windows.Shapes.Ellipse在Canvas面板中拖动、旋转和调整大小的程序。
要调整椭圆的大小并将其拖动到画布内并始终保持其居中,我需要每次纠正其原点,因为椭圆的原点位于左上角。
有办法让原点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)
如果宽度和高度是固定的,最简单的解决方案是将椭圆设置RenderTransform为TranslateTransformwithX并Y设置为负偏移,分别等于椭圆宽度和高度的一半:
<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 TranslateTransform)LayoutTransform。由于它处理布局的方式,这不应该成为问题Canvas,尽管其他面板可能会出现问题。
| 归档时间: |
|
| 查看次数: |
6064 次 |
| 最近记录: |