如何在Windows 8 metro应用程序中获取窗口的尺寸?
我想用canvas元素填充屏幕,目前我的default.js
文件看起来像这样
// ... some autogenerated code ...
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
// ... some autogenerated code ...
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
canvas.width = 600; // I want to set width and height here so that
canvas.height = 800; // canvas fills the entire screen/window.
};
// ... more autogenerated code ...
答案 0 :(得分:3)
要获得尺寸,您需要:
window.outerWidth
window.outerHeight
这将返回已应用已的比例因子的逻辑大小。
请注意,您还需要侦听“查看状态更改”,并在进入/离开捕捉,填充,完整模式时确保您的UI调整为新的窗口大小。
具体来说,您需要使用CSS媒体查询匹配:
var snappedNotification = matchMedia("all and (-ms-view-state: snapped)");
snappedNotification.addEventListener(mySnappedFunction);
或者监听window.resize,并使用当前视图状态查看当前视图:
var currentViewState = Windows.UI.ViewManagement.ApplicationView.value;
答案 1 :(得分:1)
物理尺寸可以通过这种方式获得:
var displayInformation = Windows.Graphics.Display.DisplayInformation.getForCurrentView();
var scale = displayInformation.resolutionScale;
var height = Math.ceil(window.outerHeight * scale / 100);
var width = Math.ceil(window.outerWidth * scale / 100);
var physicalWidth = width / displayInformation.rawDpiX; // in inches
var physicalHeight = height / displayInformation.rawDpiY; // in inches
var physicalSize = Math.floor(Math.sqrt(Math.pow(physicalWidth, 2) + Math.pow(physicalHeight, 2)) * 10) / 10; // in inches
我在几种屏幕尺寸上尝试了这一点,在大多数情况下,physicalSize都是准确的,有时会出现0.1“错误。
我希望它有所帮助。
答案 2 :(得分:0)
以下JavaScript代码应该有效:
var height = $('#bodyTag').outerHeight(true);
var width = $('#bodyTag').outerWidth(true);
如果您想根据比例调整画布大小,也可以使用resolutionScale
枚举:
var resolutionScale = Windows.Graphics.Display.DisplayProperties.resolutionScale;