如何重新调整画布大小,并将画布上的图像绘制为透视窗口大小



我是新的html5开发人员,开发了html5 web应用程序。在这个web应用程序中,所有动画对象都显示在画布上。我想使用响应式UI调整所有资产。画布的高度和宽度会根据浏览器的不同而变化,但画布大小的子对象仍然不会根据画布的不同而改变。

当窗口大小更改时,如何重新调整画布大小并在画布中绘制对象??。

因此,画布中的所有子对象都使用响应UI重新调整大小或缩放。

还有一件事,当我在调整窗口大小时更改画布的高度和宽度时,所有的子对象都会从画布中删除。我听不懂。为什么要移除资产?

画布是一个位图区域,当您在画布上绘制某些内容时,浏览器只会记住生成的位图。

当您通过更改canvas.widthcanvas.height属性来调整画布分辨率时,画布将被清除,并且所有位图信息都将丢失。因此,如果你不想丢失位图信息,你需要一些策略来记住位图信息,调整画布的大小,然后在调整大小的画布上重新绘制。

单击此处查看示例


或者,您可以将画布放在div容器中,并通过CSS:调整div的大小

container.style.width = newWidthValue + "px";
container.style.height = newHeightValue + "px";

这样,你就不需要记住画布上画的是什么,并且可以轻松地调整画布的大小,不会有任何损失。

单击此处查看示例


在上面的两个例子中,你可以通过设置来保持图像的纵横比

 var stretch_to_fit = false;

或者,如果你不关心纵横比,只需将该变量设置为真正的

var stretch_to_fit = true;

@Ken-AbdiasSoftware:如果我画一张图片,就在画布上。像

var c = $('#respondCanvas');
var ct = c.get(0).getContext('2d');
var imageObj = new Image();
imageObj.onload = function() {
    ct.drawImage(imageObj, 0, 0);
    };
imageObj.src = 'img/ballon.jpg';

现在根据窗口大小重新调整画布的大小,该时间图像不会重新调整大小,也不会从画布中删除。请告诉我,为什么图像没有调整大小,为什么它被从画布上删除??

若我刷新浏览器,那个么图片在画布上是可见的,但图片的比例仍然相同。

最新更新