Как нарисовать эллипс на Image Control без Canvas? - PullRequest
1 голос
/ 16 апреля 2020

У меня есть приложение в C# WF, где пользователь перемещает и масштабирует изображение. Я хочу нарисовать эллипс на элементе управления изображением, поскольку эллипс остается на месте и не перемещается при изменении изображения.

Вид:

 <Grid>
        <Canvas Name="cavRoot" Opacity="1">
            <Image Name="highresmap4" Source="highresmap4.png" Canvas.Left="0" Canvas.Top="0" Width="1473" Height="770">

            </Image>
        </Canvas>
    </Grid> 

Модель:

class draw
            {
                public static void circle(double x, double y, int width, int height, Canvas cv)
                {

                    Ellipse circle = new Ellipse()
                    {
                        Width = width,
                        Height = height,
                        Stroke = Brushes.Red,
                        StrokeThickness = 6
                    };

                    cv.Children.Add(circle);

                    circle.SetValue(Canvas.LeftProperty, (double)x);
                    circle.SetValue(Canvas.TopProperty, (double)y);
                }
            }

ViewModel:

draw.circle(x, y, 10, 10, cavRoot);

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете поместить Image в Grid и использовать свойство Margin Ellipse, чтобы указать его положение в Image:

public static void circle(double x, double y, int width, int height, Panel cv)
{
    Ellipse circle = new Ellipse()
    {
        Width = width,
        Height = height,
        Stroke = Brushes.Red,
        StrokeThickness = 6,
        Margin = new Thickness(x, y, 0, 0)
    };
    cv.Children.Add(circle);
}

XAML :

<Grid x:Name="theGrid">
    <Image Name="highresmap4" Source="highresmap4.png" Width="1473" Height="770" />
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...