Windows 8 画布在WinJS中不会自动调整大小

Windows 8 画布在WinJS中不会自动调整大小,windows-8,windows-runtime,winjs,Windows 8,Windows Runtime,Winjs,我刚刚将我的游戏移植到Win8JS。这相当简单,令人惊讶。但是我在做游戏的时候有一个固定的决心。我已经在所有画布元素上明确设置了800 x 500像素的分辨率,但我希望它们能够自动缩放到模拟器上的所有分辨率-我如何实现这一点 这就是我的游戏现在的样子:( 在同一链接上 它说“画布自动填充空白”,但在我的情况下它没有,可能是因为我预先定义了固定的高度和宽度 我该怎么做呢?如果我去掉了宽度和高度,画布就看不见了。这一切都是全新的-非常感谢您的帮助 谢谢!如果给控件指定固定大小,它将不会调整大小。如果

我刚刚将我的游戏移植到Win8JS。这相当简单,令人惊讶。但是我在做游戏的时候有一个固定的决心。我已经在所有画布元素上明确设置了800 x 500像素的分辨率,但我希望它们能够自动缩放到模拟器上的所有分辨率-我如何实现这一点

这就是我的游戏现在的样子:(

在同一链接上

它说“画布自动填充空白”,但在我的情况下它没有,可能是因为我预先定义了固定的高度和宽度

我该怎么做呢?如果我去掉了宽度和高度,画布就看不见了。这一切都是全新的-非常感谢您的帮助


谢谢!

如果给控件指定固定大小,它将不会调整大小。如果您需要显式布局,则链接建议使用

缩放单个子元素以填充可用空间,而不使用 调整大小。此控件对文件大小的更改作出反应 容器以及子元素大小的更改。对于 例如,媒体查询可能导致纵横比的变化

把你的画布放在一个视图框中,它会为你缩放

<body>
    <div data-win-control="WinJS.UI.ViewBox">
        <div class="fixedlayout">
            <p>Content goes here</p>
        </div>
    </div>
</body>


 //.css file
.fixedlayout {
    -ms-grid-columns: 1fr;
    -ms-grid-rows: 1fr;
    display: -ms-grid;
    height: 768px;
    width: 1024px;
}

内容在这里

//.css文件 .固定布局{ -ms网格柱:1fr; -ms网格行:1fr; 显示:-ms网格; 高度:768px; 宽度:1024px; }
编辑:

我对此进行了测试,结果很有效:

<body>
    <div data-win-control="WinJS.UI.ViewBox">
        <div class="fixedlayout">
            <canvas id="canvas"/>
        </div>
    </div>
</body>

window.onload = draw;
function draw() {
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    context.fillStyle = "rgb(255, 215, 0)";
    context.fillRect(15, 15, 55, 50);
    context.fillStyle = "rgba(0, 0, 200, 0.5)";
    context.fillRect(40, 40, 45, 40);
}

.fixedlayout {
    -ms-grid-columns: 1fr;
    -ms-grid-rows: 1fr;
    display: -ms-grid;
    height: 768px;
    width: 1024px;
}

window.onload=draw;
函数绘图(){
var canvas=document.getElementById(“canvas”);
var context=canvas.getContext(“2d”);
context.fillStyle=“rgb(255,215,0)”;
fillRect(15,15,55,50);
context.fillStyle=“rgba(0,02000,0.5)”;
fillRect(40,40,45,40);
}
.固定布局{
-ms网格柱:1fr;
-ms网格行:1fr;
显示:-ms网格;
高度:768px;
宽度:1024px;
}

如果为控件指定固定大小,它将不会调整大小。如果您需要显式布局,则链接建议使用

缩放单个子元素以填充可用空间,而不使用 调整大小。此控件对文件大小的更改作出反应 容器以及子元素大小的更改。对于 例如,媒体查询可能导致纵横比的变化

把你的画布放在一个视图框中,它会为你缩放

<body>
    <div data-win-control="WinJS.UI.ViewBox">
        <div class="fixedlayout">
            <p>Content goes here</p>
        </div>
    </div>
</body>


 //.css file
.fixedlayout {
    -ms-grid-columns: 1fr;
    -ms-grid-rows: 1fr;
    display: -ms-grid;
    height: 768px;
    width: 1024px;
}

内容在这里

//.css文件 .固定布局{ -ms网格柱:1fr; -ms网格行:1fr; 显示:-ms网格; 高度:768px; 宽度:1024px; }
编辑:

我对此进行了测试,结果很有效:

<body>
    <div data-win-control="WinJS.UI.ViewBox">
        <div class="fixedlayout">
            <canvas id="canvas"/>
        </div>
    </div>
</body>

window.onload = draw;
function draw() {
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    context.fillStyle = "rgb(255, 215, 0)";
    context.fillRect(15, 15, 55, 50);
    context.fillStyle = "rgba(0, 0, 200, 0.5)";
    context.fillRect(40, 40, 45, 40);
}

.fixedlayout {
    -ms-grid-columns: 1fr;
    -ms-grid-rows: 1fr;
    display: -ms-grid;
    height: 768px;
    width: 1024px;
}

window.onload=draw;
函数绘图(){
var canvas=document.getElementById(“canvas”);
var context=canvas.getContext(“2d”);
context.fillStyle=“rgb(255,215,0)”;
fillRect(15,15,55,50);
context.fillStyle=“rgba(0,02000,0.5)”;
fillRect(40,40,45,40);
}
.固定布局{
-ms网格柱:1fr;
-ms网格行:1fr;
显示:-ms网格;
高度:768px;
宽度:1024px;
}

关键似乎是这样的—“确保ViewBox控件的大小为100%宽度和高度。”尝试为ViewBox分区放置一个style=“width:100%;height:100%”并删除画布的高度和宽度。

关键似乎是这样的—“确保ViewBox控件的大小为100%宽度和高度。”尝试放置一个样式=“宽度:100%;高度:100%”用于ViewBox div。并删除画布的高度和宽度。

我尝试过,但没有发生任何事情。我是否必须更改ViewBox内div类标记的css才能使其工作?我是否可以在其中添加所有画布元素(如果是,则对我不起作用…)。请看这里的示例:第二个链接很有趣。我应该在高度和宽度属性中添加什么。fixedlayout?我必须自己尝试。我可能会有时间进行调查,但我现在在win 7上。我尝试了,但什么都没有发生。我必须更改div类的css inside viewbox标记才能工作吗?我可以吗将我所有的画布元素添加到其中(如果是,那么它对我不起作用。)请参见这里的示例:第二个链接很有趣。我应该在“高度和宽度”属性中添加什么。fixedlayout?我必须自己尝试。我可能会有时间稍后进行调查,但我现在在win 7上。尝试过。它只显示了画布的一个片段:(你是说这个,对吗?我将做最后一次尝试。删除div并直接使用“width:100%;height:100%;”设置画布样式。不幸的是,我没有安装win8来测试这一点,但它适用于纯HTML。尝试过。它只显示画布的一个片段:(你是说这个,对吗?我将做最后一次尝试。删除div并直接使用“width:100%;height:100%;”设置画布样式。不幸的是,我没有安装win8来测试这一点,但它适用于纯HTML。