[html5] 初識(shí)繪圖canvas

這個(gè)星期被調(diào)到別的項(xiàng)目組專門做了一會(huì)兒前端,沒辦法,人太少,我也只能硬著頭皮上...
說起來,html5的canvas真的好用,可以畫色塊,可以嵌入圖片,可以通過定位在圖片上寫字等等
舉例如下

  1. 在html中定義一個(gè)canvas,例如<canvas id='my_canvas' width=300 height=150></canvas>
    <font color='red'>如果不顯式定義width和height,那么canvas會(huì)用它默認(rèn)的寬和高,分別是300,150.并且這里width和height是不帶單位的哦</font>

  2. 有了這個(gè)canvas后,我們就可以在js中畫圖。

var canvas = document.getElementById('my_canvas');
//獲得canvas對(duì)象
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畫布正中間填充一個(gè)100*50的藍(lán)色矩形
//offset_x和offset_y為相對(duì)于畫布左上角的偏移量
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; //假設(shè)字體是方正的啦..
ctx.fillText(text, offset_x, offset_y);

效果如下:


image

當(dāng)字體小于12px的時(shí)候,chrome瀏覽器會(huì)仍然以12px顯示,所以當(dāng)想要顯示小字體的時(shí)候,一個(gè)方法就是利用canvas的scale方法,可以再建一個(gè)canvas專門用來放文字,然后通過z-index實(shí)現(xiàn)層疊的效果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,128評(píng)論 1 92
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,325評(píng)論 0 17
  • 一:canvas簡(jiǎn)介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標(biāo)簽 ②:HTML5 ...
    GreenHand1閱讀 4,880評(píng)論 2 32
  • 活著是很容易的事情。 以至于輕松過頭了。
    烏良閱讀 541評(píng)論 0 0
  • 花非花霧非霧,滔滔江水留不住 河山大好,出去走走,碧海藍(lán)天吹吹風(fēng)
    Chinesszz閱讀 481評(píng)論 0 2

友情鏈接更多精彩內(nèi)容