php绘制画布添加图片文字换行,canvas文字怎么换行?canvas文字换行的方法介绍

本文介绍了如何在HTML5的canvas元素中使用canvas.fillText()函数进行文本输出,并展示了如何通过JavaScript实现文本自动换行。通过实例演示和代码,读者将学会控制canvas中的文字按需换行,提升文本布局灵活性。
摘要由CSDN通过智能技术生成

html5中的canvas是用于绘制图形的,可以通过 JavaScript 来控制它绘制各种文本和图像,但是在使用 canvas 绘制文字的时候,我们可能想要让这些文字在某处按要求换行,这该如何实现呢?本篇文章将来给大家介绍关于canvas文字换行的方法,话不多说,下面我们来一起看看具体的内容。

在canvas中提供了将文本作为图片输出到画布上的功能,通常用到的函数主要有canvas.drawText 和canvas.fillText两个。

以canvas.fillText()函数为例,在canvas.fillText("information" , width , height , maxwidth )中包含四个参数,"information"表示文本输出的内容,width和height分别表示你想要输出的文本起始字符左上角的位置,而maxwidth则表示了该字符串的最大宽度,例如将maxwidth设为100,则无论字符串有多长,都将限制在100像素宽度内。

接下来我们来看一看将canvas文字换行的代码:

canvas自动换行

* {

margin: 0

}

#main {

width: 400px;

margin: 20px auto 0;

}

#canvas, #editableWarp, #editable, #hideText {

width: 400px;

height: 125px;

padding: 0;

border: 0;

background: pink;

color: blue;

font-size: 14px;

font-family: 'sans-serif';

position: relative;

z-index: 1

}

#hideText {

z-index: 0;

position: absolute;

word-break: break-word;

word-wrap: break-word;

}

p {

line-height: 32px;

}

输入:

canvas输出:

您的浏览器不支持canvas

var $canvas = $('#canvas'),

$editable = $('#editable'),

$hideText = $('#hideText'),

ctx = $(canvas)[0].getContext("2d");

$editable.keyup(function handleEdittable () {

var txt = $editable.val(),

html = convertText(txt);

$hideText.html(html);

drawText();

});

function convertText(txt) {

var html = txt.replace(/(\S)/ig, '$1');

html = html.replace(/\n|\r/ig, '
');

html = html.replace(/\s/ig, ' ');

return html;

}

function drawText () {

ctx.clearRect(0, 0, $(canvas).width(), $(canvas).height());

var fontSize = $hideText.css('fontSize');

ctx.font = fontSize + ' sans-serif';

ctx.textAlign = 'conter';

ctx.textBaseline = "top";

ctx.fillStyle = 'red';

$.each($("#hideText span"), function (i, item) {

var pos = $(item).position();

var txt = $(item).text();

ctx.fillText(txt, pos.left, pos.top);

});

}

canvas换行效果如下:

44a57aaa99cd5896a4121cc5bcea18d0.png

本篇文章到这里就结束了,关于canvas元素更多的知识可以参考HTML5开发手册学习具体内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值