【发布时间】:2015-12-25 14:14:19
【问题描述】:
我正在使用 createJS 在画布内进行绘制。我使用 resize() 函数将画布设置为占据浏览器窗口并保持纵横比。
这是代码:
mytext = new createjs.Text("Lorem ipsum dolor sit amet 2","19px Calibri","#073949");
mytext.x = 450
mytext.y = 300;
stage.addChild(mytext);
resize = function() {
var canvas = document.getElementById('canvas');
var canvasRatio = canvas.height / canvas.width;
var windowRatio = window.innerHeight / window.innerWidth;
var width;
var height;
if (windowRatio < canvasRatio) {
height = window.innerHeight - 35;
width = height / canvasRatio;
} else {
width = window.innerWidth;
height = width * canvasRatio;
}
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
}()
当画布调整大小时,文本会变得模糊(质量下降)。
http://i.imgur.com/RQOSajs.png 对比 http://i.imgur.com/Xwhf5c5.png
我该如何解决这个问题?
【问题讨论】:
-
您能否存储原始画布
width和height的大小,然后根据调整大小计算新比例,然后按新的宽度和高度正确重绘所有元素?例如。原始宽度 = 400 原始高度 = 400,调整大小后宽度现在是 800,高度现在是 600。像这样运行绘图函数。 `mytext.x = 400 * (canvas.width / originalWidth);然后对高度和字体大小做同样的事情 -
我试图避免这种解决方案,因为我已经构建了许多包含大量文本和图像的游戏,我需要为每个游戏构建一个调整大小的函数,并弥补坐标的变化。但如果这是唯一的解决方案,我将不得不应用它。
标签: javascript html canvas easeljs createjs