问题描述
我需要在画布上绘制矩形。
我知道怎么画。但我没有这样做,将利用360度
为例。蓝色,淡紫色,绿色他们是同一个矩形,我改变例如
红点颜色开始位置的矩形。
编辑:
我的行为:
LeftMouseDown以x = 50; y = 50(按)
MoveMouse到100; 100 - 现在,它的工作原理
MoveMouse 30; 150或MoveMouse 10; 10 - 现在,我不能这样做,但我需要它
除非你需要一个旋转矩形我不会理会使用变换。只需设置Left和Top到最小x和y和宽度到最大-x和高度MAXY-γ
<帆布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 exampleRed point is start position rectangle.
EDIT:
My actions:
LeftMouseDown in x=50;y=50 (press)MoveMouse to 100;100 - now it worksMoveMouse 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中如何绘制矩形?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!