Dessin de cercles dans WPF

Je suis en train d'écrire une application WPF où vous pouvez dessiner des cercles sur une fenêtre en double-cliquant dessus. Pour l'instant j'ai ce code:

public class ShapeAdorner : Adorner
{
    private readonly Ellipse _circle;

    public ShapeAdorner(UIElement adornedElement, Point circleCenter)
        : base(adornedElement)
    {
        _circle = new Ellipse
        {
            Width = 10,
            Height = 10,
            Stroke = Brushes.Black,
            StrokeThickness = 1.5
        };
        _circle.Margin =
            new Thickness(left: circleCenter.X, top: circleCenter.Y, right: 0, bottom: 0);
        base.AddVisualChild(_circle);
    }

    protected override Size ArrangeOverride(Size finalSize)
    {
        _circle.Arrange(new Rect(finalSize));
        return finalSize;
    }

    protected override Size MeasureOverride(Size constraint)
    {
        _circle.Measure(constraint);
        return constraint;
    }

    protected override Visual GetVisualChild(int index)
    {
        return _circle;
    }

    protected override int VisualChildrenCount
    {
        get { return 1; }
    }
}

Voici le code de client:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(myLabel);
        adornerLayer.Add(new ShapeAdorner(adornedElement: myLabel, circleCenter: e.GetPosition(myLabel)));
    } 
}

Les cercles sont censé être centré sur le point où vous double-cliquez sur la fenêtre; toutefois, les cercles dessinés par le code ci-dessus sont, centré au-dessous et à droite de "la double cliquez sur le point". Comment cela peut-il être fixé?

EDIT: myLabel a Height=350 et Width=525. Disons que j'ai double-cliquez sur le point (X,Y); puis le cercle devient tracé à ((350+X)/2,(525+Y)/2).

EDIT 2: Juste pour être complet, voici la .fichier xaml:

<Window x:Class="Adorners.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Adorners project" Height="350" Width="525" MouseDoubleClick="Window_MouseDoubleClick">
    <Grid>
        <Label Name="myLabel" Content="my label" Background="Red"></Label>
    </Grid>
</Window>
est-il vraiment trop loin vers la gauche? si vous n'êtes pas de compensation pour le cercle dimensions, il devrait être de loin à droite. si c'est vraiment de loin à droite, vous devez utiliser la soustraction sur les deux dimensions, sinon utiliser mon awnser
Mon erreur, j'ai corrigé ce "droit".
Merci à Kent Boogaart, H. B., et aL3891 pour répondre. Cependant, je ne pense pas que vous avez tout à fait "cloué". Les cercles ne sont pas compensés par une constante; voir le "MODIFIER" une partie de ma question pour plus de détails.

OriginalL'auteur user181813 | 2011-06-28