Bli*_*lip 3 .net c# user-interface
我在这里的超级简单绘图程序中有这段代码:
if (isMovingRectangle())
{
selectedRectangle.BoundingBox.Offset(
currentMousePos.X - mousePosWhenDown.X,
currentMousePos.Y - mousePosWhenDown.Y);
Invalidate();
}
Run Code Online (Sandbox Code Playgroud)
每次发生MouseMove事件时我都执行这些语句,但是为什么Offset方法不影响selectedRectangle的位置???非常感谢您的回答。
Rectangle是值类型。
调用Offset()要么返回一个新Rectangle值,要么修改从属性返回的副本,具体取决于Rectangle您使用的是哪个。
您需要将新Rectangle值分配回该属性。
在System.Drawing.Rectanglestruct 中,该Offset()方法会改变值,因此您需要保存它:
var rect = selectedRectangle.BoundingBox;
rect.Offset(...);
selectedRectangle.BoundingBox = rect;
Run Code Online (Sandbox Code Playgroud)