在矩形上绘制圆圈

时间:2011-10-29 18:33:28

标签: c# wpf canvas

我在visual studio中的wpf画布上绘制形状。在矩形的右内侧“添加”两个小圆圈的(最佳)方法是什么?我希望它们在用户看来是Rectangle上的“小洞”。我应该得到矩形右边的坐标,并计算圆的中心各自要求的坐标(我希望它们对称地位于矩形中间的上方和下方)来绘制圆圈? Canvas GetRight是获取Rectangle右侧坐标的合适方法吗?我如何将其应用于代码:

shapeToRender = new Rectangle() { Fill = Brushes.Red, Height = 50, Width = 50, RadiusX = 10, RadiusY = 10 };

Canvas.SetLeft(shapeToRender, e.GetPosition(canvasDrawingArea).X - rectWidth / 2);
Canvas.SetTop(shapeToRender, e.GetPosition(canvasDrawingArea).Y - rectHeight / 2);

canvasDrawingArea.Children.Add(shapeToRender);

形状由MouseEnter事件创建。

1 个答案:

答案 0 :(得分:3)

这是你想要的东西吗?

enter image description here

这是使用:

完成的
<Grid x:Class="yourNs.RectangleWithCircles"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Height="50" Width="50">
    <Rectangle Fill="Red"/>
    <UniformGrid Rows="2">
        <Ellipse Grid.Row="0" Fill="White" Height="10" Width="10" HorizontalAlignment="Right" VerticalAlignment="Center" />
        <Ellipse Grid.Row="1" Fill="White" Height="10" Width="10" HorizontalAlignment="Right" VerticalAlignment="Center" />
    </UniformGrid>
</Grid>

如果yourNs是您提供的命名空间,则只需将<yourNs:RectangleWithCircles />添加到画布。

由于您已创建了RectangleWithCircles课程,因此您可以通过添加公开方法来显示或隐藏圆圈,从而轻松对其进行自定义以满足您的需求。