Рисование кругов на прямоугольнике - PullRequest
0 голосов
/ 29 октября 2011

Я рисую фигуры на холсте в wpf в визуальной студии. Каков (лучший) способ «добавить» два маленьких кружочка на внутренней правой стороне прямоугольника? Я хочу, чтобы они казались пользователю «маленькими дырочками» на прямоугольнике. Должен ли я получить координаты правой стороны прямоугольника и вычислить соответствующие требуемые координаты центров окружностей (я хочу, чтобы они были симметрично выше и ниже середины прямоугольника), чтобы нарисовать круги? Является ли Canvas GetRight подходящим методом для получения координат правой стороны прямоугольника? Как я применяю это по коду:

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 Ответ

3 голосов
/ 30 октября 2011

Это тот тип вещей, к которому вы стремитесь?

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, вы можете легко настроить его в соответствии со своими потребностями, добавив открытый метод для отображения или скрытия кругов.Например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...