我使用HTML5,canvas和WinJS爲Windows 8創建遊戲。遊戲接近完成,一切正常。但是,我正在研究圖形,並開始擔心我已經實現了對不同分辨率的支持。在我開始這個項目的時候,我一直在閱讀大量關於如何處理分辨率的信息,儘管與畫布無關。我最終實現這樣的:如何在Windows 8 WinJS遊戲中處理分辨率?
if (window.innerWidth >= 2560 && window.innerHeight >= 1440) { //Full 2560x1440(16:9)/Letterbox 2560x1600(16:10)
canvas.width = 2560;
canvas.height = 1440;
} else if (window.innerWidth >= 1920 && window.innerHeight >= 1080) { //Full 1920x1080(16:9)/Letterbox 1920x1200(16:10)
canvas.width = 1920;
canvas.height = 1080;
} else if (window.innerWidth >= 1600 && window.innerHeight >= 900) { //Full 1600x900(16:9)/Border 1680x1050(16:10)
canvas.width = 1600;
canvas.height = 900;
} else if (window.innerWidth >= 1360 && window.innerHeight >= 768) { //Full 1366x768(16:9)/Border 1440x900 (16:10)/Cut 1360x768(<16:9)
canvas.width = 1366;
canvas.height = 768;
} else if (window.innerWidth >= 1280 && window.innerHeight >= 720) { //Full 1280x720(16:9)/Letterbox 1280x768(<16:9)/Letterbox 1280x800(16:10)/Letterbox 1280x1024(5:4)
canvas.width = 1280;
canvas.height = 720;
} else { //Letterbox 1024x768(4:3)
canvas.width = 1024;
canvas.height = 575;
}
pixelScale = canvas.height/768;
assetScale = canvas.height;
的基本思想背後卻是它找到最適合的尺寸在給定的分辨率畫布(帶有黑邊,其中屏幕比例是不同的)。 assetScale然後應用於PreloadJS的清單中的所有圖像以加載正確大小的位圖(例如images/1080/myimage.png),pixelScale用於從1366x768的工作分辨率到操作分辨率的座標縮放在其他分辨率上正確定位)。
但是,我不確定這是否是最好的/正確的方式來處理它,以及我是否會過度複雜化。在body元素中添加了一個類以幫助縮放菜單元素,我突然注意到在Blend中VS2012的高DPI設備(即1920x1080 @ 140%)將分辨率選爲768而不是1080.這不會導致降低高DPI設備的視覺效果?我是否需要分開考慮這一點,如果是這樣,如何?還是我忽略的東西?
我遇到過的其他方法包括以高分辨率渲染整個畫布元素,然後縮小整個畫布元素(再次降級視覺效果?),並讓WinJS自動選擇圖像,方法是在「-100」,「 -140「和」-180「(似乎這隻適用於inline/css圖像,而不是canvas/PreloadJS)。
有人請指出我如何處理這個正確的方向?似乎有很多關於錯誤的信息。最後,我只是想確保所有用戶都能夠獲得最佳質量的圖像,以便爲他們提供計算機/設備的分辨率。 非常感謝
閱讀此篇:[全屏winjs] [1] [1]:https://stackoverflow.com/questions/12986205/fullscreen-winjs-ui-flipview – 2014-02-27 21:27:38