gpt4 book ai didi

c# - Rectangle.Offset 方法没有效果?

转载 作者:行者123 更新时间:2023-11-30 22:10:26 28 4
gpt4 key购买 nike

我的超简单绘图程序中有这段代码:

if (isMovingRectangle())
{
selectedRectangle.BoundingBox.Offset(
currentMousePos.X - mousePosWhenDown.X,
currentMousePos.Y - mousePosWhenDown.Y);

Invalidate();
}

我每次发生 MouseMove 事件时都执行这些语句,但为什么 Offset 方法不影响 selectedRectangle 的位置????非常感谢您的回答。

最佳答案

Rectangle 是一个值类型。
调用 Offset() 要么返回一个新的 Rectangle 值,要么修改从属性返回的副本,具体取决于您使用的是哪个 Rectangle

您需要将新的 Rectangle 值分配回该属性。

System.Drawing.Rectangle 结构中,Offset() 方法改变了值,因此您需要保存:

var rect = selectedRectangle.BoundingBox;
rect.Offset(...);
selectedRectangle.BoundingBox = rect;

有关详细信息,请参阅 evils of mutable structs .

关于c# - Rectangle.Offset 方法没有效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826011/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com