Как я могу обновить это значение из определенного угла, когда он рисует прямоугольник C # WPF - PullRequest
0 голосов
/ 07 июня 2018

Я хочу изменить размер прямоугольника после первого рисования из любого угла прямоугольника или его середины.Я рисую прямоугольники из кода ниже, используя Геометрия .

private void UpdateMask(Point p)
    {
       double  left = Math.Min(origin.X, p.X);
       double  right = Math.Max(origin.X, p.X);
       double  top = Math.Min(origin.Y, p.Y);
       double  bottom = Math.Max(origin.Y, p.Y);
        rUpar = new Rect(0, 0, panel.ActualWidth, panel.ActualHeight);
        rNichy = new Rect(left, top, right - left, bottom - top);
        mask.Data = new CombinedGeometry(GeometryCombineMode.Exclude,
            new RectangleGeometry(rUpar),
            new RectangleGeometry(rNichy));

    }


private void PanelMouseMove(object sender, MouseEventArgs e)
        {
     UpdateMask(e.GetPosition(panel));
                    var pos = e.GetPosition(panel); // Panel is Grid 
                    x = Math.Min(pos.X, origin.X);
                    y = Math.Min(pos.Y, origin.Y);

                    var w = Math.Max(pos.X, origin.X) - x;
                    var h = Math.Max(pos.Y, origin.Y) - y;
                    }
private void PanelMouseDown(object sender, MouseButtonEventArgs e)
        { panel.CaptureMouse();
                origin = e.GetPosition(panel);
                UpdateMask(origin);
}
private void PanelMouseUp(object sender, MouseButtonEventArgs e)
{
panel.ReleaseMouseCapture();
}

WPF: -

<Grid>
<Canvas x:Name="panel" MouseDown="PanelMouseDown" MouseUp="PanelMouseUp" MouseMove="PanelMouseMove">
<Image Name="img" Source="..." />
<Path x:Name="mask" Fill="#99271F1F" />
</Canvas>
</Grid>

ЧтоЯ опираюсь на это: - image Любой метод обновления геометрии для изменения размера или любой другой метод.

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