如何在WPF中绘制矩形?

Med*_*tor 18 c# wpf

我需要在画布上绘制矩形.我知道怎么画.但我没有这样做会画360度

例.蓝色,淡紫色,绿色它们是同一个矩形,我改变颜色例如红点是起始位置矩形.

在此输入图像描述

编辑:

我的行动:

LeftMouseDown在x = 50; y = 50(按)MoveMouse到100; 100 - 现在它将MoveMouse工作到30; 150或MoveMouse到10; 10 - 现在我不能这样做,但我需要它

Kri*_*is 34

除非你需要一个旋转的矩形,否则我不会费心使用变换.只需将Left和Top设置为最小x和y,将宽度设置为max-x和height maxy-y.

<Canvas x:Name="canvas" MouseDown="Canvas_MouseDown" MouseMove="Canvas_MouseMove" MouseUp="Canvas_MouseUp" Background="Transparent" />
Run Code Online (Sandbox Code Playgroud)
private Point startPoint;
private Rectangle rect;

private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
{
    startPoint = e.GetPosition(canvas);

    rect = new Rectangle
    {
        Stroke = Brushes.LightBlue,
        StrokeThickness = 2
    };
    Canvas.SetLeft(rect,startPoint.X);
    Canvas.SetTop(rect,startPoint.Y);
    canvas.Children.Add(rect);
}

private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
    if(e.LeftButton == MouseButtonState.Released || rect == null)
        return;

    var pos = e.GetPosition(canvas);

    var x = Math.Min(pos.X, startPoint.X);
    var y = Math.Min(pos.Y, startPoint.Y);

    var w = Math.Max(pos.X, startPoint.X) - x;
    var h = Math.Max(pos.Y, startPoint.Y) - y;

    rect.Width = w;
    rect.Height = h;

    Canvas.SetLeft(rect, x);
    Canvas.SetTop(rect, y);
}

private void Canvas_MouseUp(object sender, MouseButtonEventArgs e)
{
    rect = null;
}
Run Code Online (Sandbox Code Playgroud)

  • 我不明白它是怎么发生的.我只是复制粘贴,它像魔术一样工作.现在我必须明白这一点.正是我需要的.非常感谢 (2认同)