1

Windows 8 Metro アプリでウィンドウの寸法を取得するにはどうすればよいですか?

画面をキャンバス要素で埋めたいのですが、現在、私の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 ...
4

3 に答える 3

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;

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.viewmanagement.applicationviewstate.aspx

于 2012-07-24T15:34:44.400 に答える
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 インチのエラーが発生することもあります。

お役に立てば幸いです。

于 2013-12-19T07:39:38.860 に答える
0

次の JavaScript コードが機能するはずです。

var height = $('#bodyTag').outerHeight(true);

var width = $('#bodyTag').outerWidth(true);

resolutionScaleスケールに基づいてキャンバスのサイズを変更する場合は、列挙型を使用することもできます。

var resolutionScale = Windows.Graphics.Display.DisplayProperties.resolutionScale;
于 2012-07-24T07:04:45.070 に答える