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();
}
};


相关文章
|
前端开发
canvas如何绘制标签,在知识的海洋狗刨(下)
下面总结了一些canvas绘制标签的心得体会,希望能够对你有所帮助。
|
移动开发 前端开发 JavaScript
H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制
H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制
718 0
H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制
|
移动开发 缓存 前端开发
H5画布 canvas(二)绘制文字、图片、坐标系,canvas颜色和样式,canvas绘制环境
H5画布 canvas(二)绘制文字、图片、坐标系,canvas颜色和样式,canvas绘制环境
654 0
H5画布 canvas(二)绘制文字、图片、坐标系,canvas颜色和样式,canvas绘制环境
|
前端开发 JavaScript
教你如何利用canvas画布绘制哆啦A梦
订阅专栏 教你如何利用canvas画布绘制哆啦A梦 最近一直在练习使用canvas画布标签,今天教大家如何使用canvas画布绘制哆啦A梦。如图: HTML代码: <canvas id="my_canvas"></canvas> 1 CSS代码: canvas { display:block; margin:0 auto; background: pink } 1 2 3 4 5 JavaScript代码: var oCanvas = document.getEleme
教你如何利用canvas画布绘制哆啦A梦
|
前端开发 UED 数据格式
|
缓存 算法 前端开发
canvas绘制图像轮廓效果
canvas绘制图像轮廓效果
canvas绘制图像轮廓效果
|
存储 机器学习/深度学习 JavaScript
openlayers之绘制矩形星星拉框放大自定义图形
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/83036414 简介:openlayers绘制矩形、星星、拉框绘制,以及自定义图形。
1647 0
|
9月前
|
前端开发
canvas详解04-绘制文字
canvas详解04-绘制文字
106 2
canvas详解04-绘制文字
|
Web App开发 前端开发 C++
第166天:canvas绘制饼状图动画
canvas绘制饼状图动画 1、HTML 1 DOCTYPE html> 2 3 4 5 6 饼状图面向对象版本 7 8 body { 9 padding: 0; 10 ma...
1416 0

热门文章

最新文章