Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用鼠标滚轮XNA进行图像缩放_C#_.net_Xna_Xna 4.0 - Fatal编程技术网

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

C# 使用鼠标滚轮XNA进行图像缩放,c#,.net,xna,xna-4.0,C#,.net,Xna,Xna 4.0,我有一个图像,我想增加大小或减少大小,如果鼠标滚轮是向上或向下滚动相应。如果图像达到设置的最大大小,则图像不会变大,反之亦然,如果图像变小。我遇到的问题是,一旦您达到图像的最大大小并继续向上滚动,然后转到向下滚动,图像将不会立即变小,直到您向下滚动的次数与向上滚动的次数相同,同时图像处于最大大小,然后再次反向滚动以使图像变小。ScrollWheelValue是只读属性,因此无法重置。我试图添加一些逻辑,如果滚轮向上滚动,图像是最大大小减去120,因为120是鼠标每次滚动增加的值。有人能帮我解决这

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

您将看到,它从游戏开始就保持一个运行值。因此,您要做的是检查它与以前的值的变化,并相应地做一些事情

你是如何设置的,似乎你并不关心实际值,只关心与上次滚动滚轮时的差异

在更新循环之外声明以下内容:

float prevWheelValue;
float currWheelValue;
然后在更新中:

prevWheelValue = currWheelValue;
currWheelValue = ms.ScrollWheelValue;
现在,您的检查可以简单地将prevWheelValue> 如果你读到:

您将看到,它从游戏开始就保持一个运行值。因此,您要做的是检查它与以前的值的变化,并相应地做一些事情

你是如何设置的,似乎你并不关心实际值,只关心与上次滚动滚轮时的差异

在更新循环之外声明以下内容:

float prevWheelValue;
float currWheelValue;
然后在更新中:

prevWheelValue = currWheelValue;
currWheelValue = ms.ScrollWheelValue;
现在,您的检查可以简单地将prevWheelValue>