【发布时间】:2019-03-03 17:54:22
【问题描述】:
我使用此代码将我的画布宽度和高度调整为浏览器的视口
function scaleCanvas(){
c.width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
c.height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
drawMenu();
}
效果非常好,但现在我想将我的对象文本等的坐标与我尝试过的画布的大小相关联
// Canvas grösse
c.width = 1280;
c.height = 720;
// Text Schwer
var schwerx = 890;
var schwery = 52;
var schwerw = 100;
var schwerh = 30;
var schwerf = 22;
// Basis Höhe und Breite
var basex = 1280;
var basey = 720;
// Function Schwer
function schwer(){
var rx = schwerx / basex;
var x = rx * c.width;
var ry = schwery / basey;
var y = ry * c.height;
var rw = schwerw / basex;
var w = rw * c.width;
var rh = schwerh / basey;
var h = rh * c.height;
ctx.save();
ctx.rotate(16.3*Math.PI/180);
ctx.font = getFont();
ctx.fillStyle = "#feec47";
ctx.fillText('SCHWER', x, y, w, h);
ctx.restore();
function getFont() {
var ratio = schwerf / basex;
var size = c.width * ratio;
return (size|0) + 'px Pokemon';
}
}
这适用于字体大小以及画布的某些宽度和高度,但不适用于所有比例。
【问题讨论】:
-
我不确定我是否理解,但您不应该在字体比例中使用
basey吗? (var ratio = schwerf / basex;) 因为字体大小是基于字体高度,而不是宽度。 -
那是真的,谢谢我昨晚凌晨 4 点写的,我想知道为什么它实际上仍然有效,但位置无效
-
字体占据一个矩形,而字符串将返回它所占用的尺寸的矩形。也许两者都有一个 var ratio = schwerf / basex;和 var ratio = schwerf / basey;如果您想使用极端的画布尺寸,则需要解决方案。
-
所以任何人都知道如何计算与画布大小相关的坐标的解决方案?
标签: javascript html canvas