首页 > 解决方案 > 绘制矩形 C# WPF 后如何从特定角更新此值

问题描述

我想在第一次从矩形的任何角落或中间绘制后调整矩形的大小。我正在使用Geometry从下面的代码中绘制矩形。

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>

我从中得出的是:- 任何更新几何以调整大小的方法或任何其他方法。

标签: c#wpf

解决方案


推荐阅读