簡體   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