gpt4 book ai didi

c# - 使用鼠标滚轮 XNA 制作图像比例尺

转载 作者:行者123 更新时间:2023-11-30 21:02:53 25 4
gpt4 key购买 nike

我有一张图片,如果相应地向上或向下滚动鼠标滚轮,我想增大或减小尺寸。如果图像达到设定的最大尺寸,它不会变大,反之亦然,如果使图像变小。我遇到的问题是一旦你达到图像的最大尺寸并继续向上滚动然后向下滚动图像不会立即变小,直到你向下滚动与向上滚动相同的次数,同时将图像放在最大尺寸,然后再次反转以使图像变小。 ScrollWheelValue 是只读属性,因此无法重置。我试图添加一些逻辑,如果轮子向上滚动并且图像是最大尺寸减去 120,因为 120 是鼠标每次滚动增加的值。谁能帮我解决这个问题?非常感谢

原始代码:

        float scale = ms.ScrollWheelValue / 120;

scaleFactor = scale * scaleChange;

if (scaleFactor > MAX_SCALE)
{
scaleFactor = MAX_SCALE;


}

else if (scaleFactor < MIN_SCALE)
{
scaleFactor = MIN_SCALE;


}

新代码:

        if (scaleFactor > MAX_SCALE)
{
scaleFactor = MAX_SCALE;
float newScale = ms.ScrollWheelValue / 120;
if (newScale > scale)
{
scaleCount = scaleCount - 120;
}
if (newScale < scale)
{
scaleCount = scaleCount + 120;
}

}

else if (scaleFactor < MIN_SCALE)
{
scaleFactor = MIN_SCALE;
float newScale = ms.ScrollWheelValue / 120;
if (newScale > scale)
{
scaleCount = scaleCount - 120;
}
if (newScale < scale)
{
scaleCount = scaleCount + 120;
}

}

else
{
scale = ms.ScrollWheelValue / 120 + scaleCount;

scaleFactor = scale * scaleChange;
}

最佳答案

如果您阅读: MSDN MouseState Scroll Wheel Value

您会看到它从游戏一开始就保持一个运行值。因此,您要做的是检查它与以前的值相比是否有变化,然后做相应的事情。

您的设置方式似乎并不关心实际值,只关心自上次滚动滚轮以来的差异。

在更新循环之外声明这些:

float prevWheelValue;
float currWheelValue;

然后在你的更新中:

prevWheelValue = currWheelValue;
currWheelValue = ms.ScrollWheelValue;

现在您的检查可以简单地是 if prevWheelValue > < or == to currWheelValue 并将该值限制在您想要的边界内。

Mathhelper.Clamp

关于c# - 使用鼠标滚轮 XNA 制作图像比例尺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166244/

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