繁体   English   中英

使用鼠标滚轮XNA进行图像缩放

[英]Make an Image Scale with Mouse Scroll Wheel XNA

我有一个图像,如果相应地向上或向下滚动鼠标滚轮,我想增加尺寸或减小尺寸。 如果图像达到设定的最大尺寸,则不会使蚂蚁变大,反之亦然。 我遇到的问题是,一旦达到图像的最大尺寸并继续向上滚动,然后向下滚动,图像就不会立即变小,直到您向下滚动相同的次数,同时将图像置于最大尺寸,然后再次反转以缩小图像。 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滚轮值

您会看到它从游戏开始就一直保持着持续的价值。 因此,您要做的就是检查它是否与以前的值发生了变化,并相应地进行操作。

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

在更新循环外声明这些:

float prevWheelValue;
float currWheelValue;

然后在您的更新中:

prevWheelValue = currWheelValue;
currWheelValue = ms.ScrollWheelValue;

现在,您只需检查prevWheelValue> <或==以获取currWheelValue并将值限制在所需的边界即可。

Mathhelper.Clamp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM