[html5] 初识绘图canvas

这个星期被调到别的项目组专门做了一会儿前端,没办法,人太少,我也只能硬着头皮上...
说起来,html5的canvas真的好用,可以画色块,可以嵌入图片,可以通过定位在图片上写字等等
举例如下

  1. 在html中定义一个canvas,例如<canvas id='my_canvas' width=300 height=150></canvas>
    <font color='red'>如果不显式定义width和height,那么canvas会用它默认的宽和高,分别是300,150.并且这里width和height是不带单位的哦</font>

  2. 有了这个canvas后,我们就可以在js中画图。

var canvas = document.getElementById('my_canvas');
//获得canvas对象
var ctx = canvas.getContext('2d');

//开始绘图
ctx.beginPath();

var width = canvas.width;
var height = canvas.height;

//把canvas轮廓勾出来
ctx.beginPath();
ctx.strokeStyle = 'black';
ctx.strokeRect(0, 0, width, height);
ctx.closePath();

//在canvas画布正中间填充一个100*50的蓝色矩形
//offset_x和offset_y为相对于画布左上角的偏移量
var offset_x = (width - 100) / 2;
var offset_y = (height - 50) / 2;
ctx.fillStyle = 'blue';
ctx.fillRect(offset_x, offset_y, 100, 50);
ctx.closePath();

//在canvas左上角写一行字 
ctx.beginPath();
ctx.font = '20px 微软雅黑';
ctx.strokeStyle = 'green';
ctx.textBaseline = 'top';
ctx.strokeText('一行白鹭上青天', 0, 0);

//在canvas右下角写一行字 
ctx.fillStyle = 'red';
ctx.font = '12px FZFSJW—GB1-0';

var text = '小荷才露尖尖角';
var text_w = ctx.measureText(text).width; //字宽
offset_x = width - text_w;
offset_y = height - text_w / 7; //假设字体是方正的啦..
ctx.fillText(text, offset_x, offset_y);

效果如下:


image

当字体小于12px的时候,chrome浏览器会仍然以12px显示,所以当想要显示小字体的时候,一个方法就是利用canvas的scale方法,可以再建一个canvas专门用来放文字,然后通过z-index实现层叠的效果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,713评论 0 17
  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 10,181评论 2 32
  • 活着是很容易的事情。 以至于轻松过头了。
    乌良阅读 3,411评论 0 0
  • 花非花雾非雾,滔滔江水留不住 河山大好,出去走走,碧海蓝天吹吹风
    Chinesszz阅读 3,233评论 0 2