gpt4 book ai didi

javascript - 调整窗口大小时防止 Canvas 清除

转载 作者:技术小花猫 更新时间:2023-10-29 11:59:00 26 4
gpt4 key购买 nike

我正在尝试创建一个在 Canvas 标签内绘制矩形的简单应用程序。我已将 Canvas 调整为全屏,但每当我调整视口(viewport)大小时,Canvas 就会清除。我试图阻止它清除并只保留其中的内容。有什么想法吗?

http://mediajux.com/experiments/canvas/drawing/

  /*
* This is the primary class used for the application
* @author Alvin Crespo
*/
var app = (function(){

var domBod = document.body;
var canvas = null;
var canvasWidth = null;
var canvasHeight = null;

return {

//Runs after the DOM has achieved an onreadystatechange of "complete"
initApplication: function()
{
//setup envrionment variables
canvas = document.getElementById('canvas') || null;

//we need to resize the canvas at the start of the app to be the full window
this.windowResized();

//only set the canvas height and width if it is not false/null
if(canvas)
{
canvasWidth = canvas.offsetWidth;
canvasHeight = canvas.offsetHeight;
}

//add window events
window.onresize = this.windowResized;

circles.canvas = canvas;
circles.canvasWidth = canvasWidth;
circles.canvasHeight = canvasHeight;
circles.generateCircles(10);

setInterval(function(){
circles.animateCircles();
}, 50);
},

/**
* Executes Resizing procedures on the canvas element
*/
windowResized: function()
{
(this.domBod === null) ? 'true' : 'false';
try{
console.log(canvas);
canvas.setAttribute('width', document.body.clientWidth);
canvas.setAttribute('height', document.body.clientHeight);
}catch(e) {
console.log(e.name + " :: " + e.message);
}
},

/**
* Returns the canvas element
* @returns canvas
*/
getCanvas: function()
{
return canvas;
}

};
})();

最佳答案

设置 Canvas 宽度属性将清除 Canvas 。
如果您调整样式宽度(例如 canvas.style.visibility),它会缩放(通常不会以这种漂亮的方式)。
如果你想让 Canvas 更大但保持元素原样,我建议将 Canvas 存储为图像——例如调用 toDataURL 方法获取图像,然后使用 drawImage() 将其绘制到调整大小的 Canvas 上。

关于javascript - 调整窗口大小时防止 Canvas 清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com