我有一个可以拖动、旋转和调整大小的程序System.Windows.Shapes.Ellipse
in a Canvas
panel.
要调整椭圆的大小并将其拖动到画布内并始终保持其居中,我需要每次纠正其原点,因为椭圆的原点位于左上角。
有办法让原点在Ellipse
默认在中心?
Drag:
Canvas.SetTop(ellipse, newX - (ellipse.Height / 2));
Canvas.SetLeft(ellipse, newY - (ellipse.Width / 2));
Resize:
ellipse.Height = newHeight;
ellipse.Width = newWidth;
Rotate:
ellipse.RenderTransform = new RotateTransform(angle,(ellipse.Width/2),(ellipse.Height/2));
如果宽度和高度是固定的,最简单的解决方案是设置椭圆的RenderTransform
to a TranslateTransform
with X
and Y
设置为负偏移,分别等于椭圆宽度和高度的一半:
<Ellipse Width="100" Height="100" Fill="Red">
<Ellipse.RenderTransform>
<TranslateTransform X="-50" Y="-50" />
</Ellipse.RenderTransform>
</Ellipse>
请注意,使用时需要注意RenderTransform
是变换未应用于布局(并且您不能使用TranslateTransform
为了LayoutTransform
)。这不应该是一个问题Canvas
因为它处理布局的方式,尽管其他面板可能会出现问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)