canvas如何绘制标签,在知识的海洋狗刨(上)

简介: 下面总结了一些canvas绘制标签的心得体会,希望能够对你有所帮助。

绘制圆弧



<canvas id="canvas" width="300" height="300" ref="canvas"></canvas>


var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(150,150,50,0,Math.PI*1/2);
ctx.stroke();


运行结果:



绘制直线



var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(100,100);
ctx.lineTo(200,150);
ctx.stroke();


运行结果:



绘制圆角矩形



通过圆弧与直线相结合,绘制出矩形路径。


var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var width = 100;
var height = 50;
var radius = 5;
ctx.translate(100, 100);
ctx.beginPath(0);
ctx.arc(width - radius, height - radius, radius, 0, Math.PI / 2);
ctx.lineTo(radius, height);
ctx.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);
ctx.lineTo(0, radius);
ctx.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2);
ctx.lineTo(width - radius, 0);
ctx.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2);
ctx.lineTo(width, height - radius);
ctx.closePath();
// 填充背景色
ctx.fillStyle = "#ff6a61";
ctx.fill();
ctx.restore();


运行结果:



填充文本


...
ctx.font = '16px PingFangSC-Regular';
ctx.textAlign = "center"; 
ctx.textBaseline = 'middle';
ctx.fillStyle = '#fff';
ctx.fillText('快狗打车', 50, 25);


textBaseline 属性设置或返回在绘制文本时的当前文本基线。


运行结果:



宽度自适应



标签宽度设置定值的做法难免有些耍流氓,怎样才能实现标签宽度由文本内容撑起?

canvas为我们提供了ctx.measureText(text).width接口获得文本内容宽度;标签宽度 = 文本内容宽度 + 左右内边距。


先把绘制圆角矩形背景的部分单独抽出来:


function drawRoundRect(ctx, x, y, width, height, radius, bgc) {
  ctx.save();
  ctx.translate(x, y);
  drawRoundRectPath(ctx, width, height, radius);
  ctx.fillStyle = bgc;
  ctx.fill();
  ctx.restore();
}
function drawRoundRectPath(ctx, width, height, radius) {
  ctx.beginPath(0);
  ctx.arc(width - radius, height - radius, radius, 0, Math.PI / 2);
  ctx.lineTo(radius, height);
  ctx.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);
  ctx.lineTo(0, radius);
  ctx.arc(radius, radius, radius, Math.PI, (Math.PI * 3) / 2);
  ctx.lineTo(width - radius, 0);
  ctx.arc(width - radius, radius, radius, (Math.PI * 3) / 2, Math.PI * 2);
  ctx.lineTo(width, height - radius);
  ctx.closePath();
}
};


相关文章
|
3月前
ThreeJs绘制线
这篇文章详细说明了如何使用Three.js来绘制线条,包括创建线几何体、设置材质以及将线条添加到3D场景中的具体步骤。
42 1
|
8月前
|
前端开发
canvas详解04-绘制文字
canvas详解04-绘制文字
98 2
canvas详解04-绘制文字
|
8月前
|
缓存 前端开发 JavaScript
canvas详解01-绘制基本图形
canvas详解01-绘制基本图形
132 2
|
8月前
|
监控 API 计算机视觉
OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
78 0
|
8月前
|
前端开发 API
canvas详解03-绘制图像和视频
canvas详解03-绘制图像和视频
100 1
|
Java 图形学
JavaSwing矩形绘制教程
JavaSwing矩形绘制教程 矩形是计算机图形学中最基本的图形,JavaSwing也提供了绘制矩形的功能。本教程将介绍如何使用JavaSwing绘制矩形。
212 0
|
前端开发
canvas绘制五角星
canvas绘制五角星
192 0
|
前端开发
canvas如何绘制标签,在知识的海洋狗刨(下)
下面总结了一些canvas绘制标签的心得体会,希望能够对你有所帮助。
|
前端开发 数据可视化
canvas可视化效果之内阴影效果
canvas可视化效果之内阴影效果
canvas可视化效果之内阴影效果
|
移动开发 前端开发 JavaScript
H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制
H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制
709 0
H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制