我有一个带点的多边形。我需要在多边形内的指定点绘制一个圆。我尝试了椭圆的剪辑属性但无法获得多边形的点。
XAML
<Border x:Name="boardDiagramBorder" BorderThickness="2.5" Margin="5" Background="Gray" >
<Grid x:Name="boardCanvas">
<Polygon x:Name="polyOutLine" ClipToBounds="True" Fill="Black"
Stroke="White"
StrokeThickness="2">
</Polygon>
</Grid>
</Border>
绘制多边形的代码
polyOutLine.Points.Add(new System.Windows.Point() { X = 0, Y = 0 });
polyOutLine.Points.Add(new System.Windows.Point() { X = 118900, Y = 0 });
polyOutLine.Points.Add(new System.Windows.Point() { X = 118900, Y = 62993 });
polyOutLine.Points.Add(new System.Windows.Point() { X = 0, Y = 62993 });
我需要在点21004,-57874画一个圆圈。
答案 0 :(得分:2)
您无法在网格中使用精确坐标进行绘制。您必须使用Canvas使用坐标绘制形状,包括矩形,圆形和多边形。
更新:我在你的评论中根据你的问题扩展我的答案,我把它放在这里。
取决于画布的位置,因为圆圈始终具有基于画布的相对坐标。
例如,如果画布位于距离左上角0,0的坐标处,那么您的圆圈将位于相对于“画布”的坐标中,没有进一步的偏移。如果“画布”未定位于0,0,那么您的绘图将位于与“画布”位置的偏移位置。
答案 1 :(得分:1)
您可以使用Canvas.Top和Canvas.Left属性来设置圆心,或者您可以使用margin属性
<Grid>
<Canvas>
<Ellipse x:Name="innerCircle" Width="100"
Height="100"
Fill="#FFF4F4F5"
Stroke="Black"
Canvas.Left="50"
Canvas.Top="0"
/>
<Polygon x:Name="polyOutLine"
Stroke="Purple"
StrokeThickness="2">
<Polygon.Fill>
<SolidColorBrush Opacity="0.4" Color="Blue" />
</Polygon.Fill>
</Polygon>
</Canvas>
</Grid>
要从代码中设置圆心,请使用以下函数
private void SetCircleCenter(int x,int y)
{
double radius = innerCircle.Width / 2;
innerCircle.Margin = new Thickness(x-radius, y-radius, 0, 0);
}