我需要在画布上绘制矩形.我知道怎么画.但我没有这样做会画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)
| 归档时间: |
|
| 查看次数: |
62940 次 |
| 最近记录: |