canvas 中的更改控件零点
Change controls zero point in canvas
当我在 canvas 中绘制项目时,位置是从 canvas 中项目的顶部开始:
<Canvas Name="cnvMain"
Width="80"
Height="80">
<Ellipse Canvas.Top="20"
Canvas.Left="40"
Width="40"
Height="40"
Fill="Gray" />
</Canvas>
现在我需要的是从元素底部进行测量,如下所示:
最后我希望能够设置从椭圆底部到 Canvas 顶部的距离。
注意:椭圆有时不能是圆,不能将其倒置。我也不知道运行前的高度,所以在 xaml 中设置负边距也不起作用。
(图片和例子xaml取自:http://weblogs.asp.net/psheriff/centering-text-within-a-wpf-shape-using-a-canvas)
如果要指定椭圆底部到 Canvas 底部的距离,可以将 Canvas.Top
替换为 Canvas.Bottom
:
<Ellipse Canvas.Bottom="20" Canvas.Left="40" Width="40" Height="40" Fill="Gray"/>
对于椭圆底部到Canvas顶部的距离,您可以指定负边距:
<Ellipse Canvas.Top="20" Canvas.Left="40" Width="40" Height="40" Fill="Gray"
Margin="0,-40,0,0"/>
或适当的 RenderTransform:
<Ellipse Canvas.Top="20" Canvas.Left="40" Width="40" Height="40" Fill="Gray">
<Ellipse.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</Ellipse.RenderTransform>
</Ellipse>
为了反转整个 Canvas 坐标系的 y 方向,您可以将 RenderTransform 应用于 Canvas:
<Canvas ... RenderTransformOrigin="0,0.5">
<Canvas.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</Canvas.RenderTransform>
...
</Canvas>
编辑:您也可以将椭圆放在另一个高度为零的 Canvas 中,并将其附加到下 Canvas 边框:
<Canvas Canvas.Top="20" Canvas.Left="40" Width="0" Height="0">
<Ellipse Canvas.Bottom="0" Width="40" Height="40" Fill="Gray"/>
</Canvas>
当我在 canvas 中绘制项目时,位置是从 canvas 中项目的顶部开始:
<Canvas Name="cnvMain"
Width="80"
Height="80">
<Ellipse Canvas.Top="20"
Canvas.Left="40"
Width="40"
Height="40"
Fill="Gray" />
</Canvas>
现在我需要的是从元素底部进行测量,如下所示:
最后我希望能够设置从椭圆底部到 Canvas 顶部的距离。 注意:椭圆有时不能是圆,不能将其倒置。我也不知道运行前的高度,所以在 xaml 中设置负边距也不起作用。
(图片和例子xaml取自:http://weblogs.asp.net/psheriff/centering-text-within-a-wpf-shape-using-a-canvas)
如果要指定椭圆底部到 Canvas 底部的距离,可以将 Canvas.Top
替换为 Canvas.Bottom
:
<Ellipse Canvas.Bottom="20" Canvas.Left="40" Width="40" Height="40" Fill="Gray"/>
对于椭圆底部到Canvas顶部的距离,您可以指定负边距:
<Ellipse Canvas.Top="20" Canvas.Left="40" Width="40" Height="40" Fill="Gray"
Margin="0,-40,0,0"/>
或适当的 RenderTransform:
<Ellipse Canvas.Top="20" Canvas.Left="40" Width="40" Height="40" Fill="Gray">
<Ellipse.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</Ellipse.RenderTransform>
</Ellipse>
为了反转整个 Canvas 坐标系的 y 方向,您可以将 RenderTransform 应用于 Canvas:
<Canvas ... RenderTransformOrigin="0,0.5">
<Canvas.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</Canvas.RenderTransform>
...
</Canvas>
编辑:您也可以将椭圆放在另一个高度为零的 Canvas 中,并将其附加到下 Canvas 边框:
<Canvas Canvas.Top="20" Canvas.Left="40" Width="0" Height="0">
<Ellipse Canvas.Bottom="0" Width="40" Height="40" Fill="Gray"/>
</Canvas>