WPF中如何绘制矩形? [英] How Draw rectangle in WPF?

查看:2484
本文介绍了WPF中如何绘制矩形?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在画布上绘制矩形。
我知道怎么画。但我没有这样做,将利用360度



为例。蓝色,淡紫色,绿色他们是同一个矩形,我改变例如
红点颜色开始位置的矩形。





编辑:



我的行为:



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


解决方案

除非你需要一个旋转矩形我不会理会使用变换。只需设置Left和Top到最小x和y和宽度到最大-x和高度MAXY-γ





<预先类=朗XML prettyprint-覆盖> <帆布X:NAME =画布的MouseDown =Canvas_MouseDown的MouseMove =Canvas_MouseMove的MouseUp =Canvas_MouseUp背景=透明/>





 私人点的startPoint; 
私人矩形RECT;

私人无效Canvas_MouseDown(对象发件人,MouseButtonEventArgs E)
{
的startPoint = e.GetPosition(画布);

RECT =新的Rectangle
{
行程= Brushes.LightBlue,
StrokeThickness = 2
};
Canvas.SetLeft(RECT,startPoint.X);
Canvas.SetTop(RECT,startPoint.X);
canvas.Children.Add(RECT);
}

私人无效Canvas_MouseMove(对象发件人,MouseEventArgs E)
{
如果(e.LeftButton == || MouseButtonState.Released矩形== NULL)
返回;

VAR POS = e.GetPosition(画布);

变种X = Math.Min(pos.X,startPoint.X);
变种Y = Math.Min(pos.Y,startPoint.Y);

变种W = Math.Max​​(pos.X,startPoint.X) - X;
VAR H = Math.Max​​(pos.Y,startPoint.Y) - Ÿ;

rect.Width = W;
rect.Height = H;

Canvas.SetLeft(RECT,X);
Canvas.SetTop(RECT,Y);
}

私人无效Canvas_MouseUp(对象发件人,MouseButtonEventArgs E)
{
RECT = NULL;
}


I need draw rectangle in canvas. I know how to draw. But I did not get to do so would draw on a 360-degree

Example. blue, lilac, green they are one and the same rectangle, I changed the color for example Red point is start position rectangle.

EDIT:

My actions:

LeftMouseDown in x=50;y=50 (press) MoveMouse to 100;100 - now it works MoveMouse to 30;150 or MoveMouse to 10;10 - Now I can not do this, but I need it

解决方案

Unless you need a rotated rectangle I wouldn't bother using transforms. Just set Left and Top to the minimum x and y and width to max-x and height maxy-y.

<Canvas x:Name="canvas" MouseDown="Canvas_MouseDown" MouseMove="Canvas_MouseMove" MouseUp="Canvas_MouseUp" Background="Transparent" />

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.X);
    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;
}

这篇关于WPF中如何绘制矩形?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆