【问题标题】:Dynamically change the size of text with canvas用画布动态改变文本的大小
【发布时间】:2021-04-04 01:59:35
【问题描述】:

使用包node-canvas,我需要呈现一个用户名——一个可能相当大的用户名。我需要确保文本可以动态缩放它的大小以适应预定义的图像,这样名称就不会被截断,它只会变得更小,以便可以呈现更多字符。我曾考虑使用 jimp 和 sharp,但找不到最佳结果。

谢谢。

【问题讨论】:

    标签: javascript canvas jimp


    【解决方案1】:

    HTML/CSS 中有不同类型的单位,可以是绝对的,也可以是相对的。 CSS EM, PX, PT, CM, IN…

    例如,如果你使用“10px”作为默认字体高度,它在任何屏幕尺寸上看起来都是一样的,但如果你使用“10vw”,高度会随着窗口的宽度而变化。

    你也可以使用“%”来达到同样的效果,这通常与父元素的大小有关。

    但最好的选择是创建一个事件函数,根据画布大小改变字体的宽度,这样字体就不会变得太大或太小。

    【讨论】:

      【解决方案2】:

      这就是您可以在canvas 内的 Javascript 中显示文本的方法:

      var canvas = document.getElementById("myCanvas");
      var ctx = canvas.getContext("2d");
      ctx.font = "30px Arial";
      ctx.fillText("Hello World", 10, 50); 
      

      您可以将字体设置为:

      ctx.font = "30px Arial";
      

      从严格的技术角度来看,这就是您所需要的。但是,由于您有大小限制,因此您需要遵守一些边界限制。要查看适合什么尺寸,您可以使用measureText。您也可以使用widthheight 属性获取画布尺寸。因此,如果您要自己实现此功能,则必须尝试边界、大小和字体,直到您对结果感到满意为止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-14
        • 1970-01-01
        • 2014-10-07
        • 1970-01-01
        • 2012-08-02
        • 1970-01-01
        • 2013-07-19
        相关资源
        最近更新 更多