pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

基于HTML5 Canvas:字符串,路徑,背景,圖片的詳解_ht

基于HTML5 Canvas:字符串,路徑,背景,圖片的詳解_html5教程技巧HTML5中文學習網,是中國最大的HTML5中文門戶,為廣大HTML5愛好者提供各種HTML5資料,包括HTML5網站、HTML5資訊、HTML5應用、HTML5游戲
點評:HTML5中新增了畫布標簽,通過它,可以使用JavaScript在網頁中繪制圖像。標簽在網頁中得到的是一個矩形空白區域,可以通過width和height屬性來調整其寬和高

創建一個Canvas畫布的方法如下:

復制代碼
代碼如下:

<canvas id=”canvas” width=”600” height=”400”></canvas>

可以在標簽中添加<canvas>標簽不可用時的替代文本,如下所示:

復制代碼
代碼如下:

<canvas id=”canvas” width=”600” height=”400”>
<p>Your browserdoes not support the canvas element.</p>
</canvas>

目前新版本的各類瀏覽器已經逐步開始支持HTML5,所以在開始使用之前請確保你的瀏覽器是新版本的Chrome、Firefox或者是IE9以上的瀏覽器。

<canvas>標簽本身并不具備畫圖的能力,其本身只是為JavaScript提供了一個繪制圖像的區域,因此畫圖工作需要再JavaScript中完成。如下所示是畫圖之前需要的準備工作:

復制代碼
代碼如下:

var canvas = document.getElementById(“canvas”);
var context2D = canvas.getContext(“2d”);

首先需要獲取到網頁中的畫布對象,然后用getContext()方法從畫布中得到二維繪制對象。getContext()方法的參數”2d”即表示二維(據說以后會擴展到三維,而目前唯一可用的參數只有”2d”)。

得到的Context對象是HTML5的內建對象,其中包含了許多圖形繪制和調整的方法,在JavaScript中通過操作它即可以在Canvas畫布中繪制所需的圖形。

字符串

使用Context對象的fillText()方法能夠在畫布中繪制字符串。fillText()方法的原型如下:

void fillText(text, left,top, [maxWidth]);

其四個參數的含義分為是:需繪制的字符串,繪制到畫布中時左上角在畫布中的橫坐標及縱坐標,繪制的字符串的最大長度。其中最大長度maxWidth是可選參數。

另外,可以通過改變Context對象的font屬性來調整字符串的字體以及大小,默認為”10px sans-serif”。

如下的示例在畫布中(字符串的左上角處于畫布中央)顯示了字符串“Hello Canvas!”

復制代碼
代碼如下:

<canvas id="canvas" width="600"height="400">
<p>Your browserdoes not support the canvas element!</p>
</canvas>

<script type="text/javascript">
window.onload = function() {
var canvas =document.getElementById("canvas");
var context2D =canvas.getContext("2d");

context2D.font ="35px Times New Roman";
context2D.fillText("HelloCanvas!", canvas.width / 2, canvas.height / 2);
}
</script>

路徑

HTML5 Canvas的基本圖形都是以路徑為基礎的。通常使用Context對象的moveTo()、lineTo()、rect()、arc()等方法先在畫布中描出圖形的路徑點,然后使用fill()或者stroke()方法依照路徑點來填充圖形或者繪制線條。

通常,在開始描繪路徑之前需要調用Context對象的beginPath()方法,其作用是清除之前的路徑并提醒Context開始繪制一條新的路徑,否則當調用stroke()方法的時候會繪制之前所有的路徑,影響繪制效果,同時也因為重復多次操作而影響網頁性能。另外,調用Context對象的closePath()方法可以顯式地關閉當前路徑,不過不會清除路徑。

以下是一些描繪路徑的方法的原型:

void moveTo(x, y);

用于顯式地指定路徑的起點。默認狀態下,第一條路徑的起點是畫布的(0, 0)點,之后的起點是上一條路徑的終點。兩個參數分為表示起點的x、y坐標值。

void lineTo(x, y);

用于描繪一條從起點從指定位置的直線路徑,描繪完成后繪制的起點會移動到該指定位置。參數表示指定位置的x、y坐標值。

void rect(left, top,width, height);

用于描繪一個已知左上角頂點位置以及寬和高的矩形,描繪完成后Context的繪制起點會移動到該矩形的左上角頂點。參數表示矩形左上角頂點的x、y坐標以及矩形的寬和高。

void arcTo(x1, y1, x2, y2,radius);

用于描繪一個與兩條線段相切的圓弧,兩條線段分別以當前Context繪制起點和(x2, y2)點為起點,都以(x1, y1)點為終點,圓弧的半徑為radius。描繪完成后繪制起點會移動到以(x2, y2)為起點的線段與圓弧的切點。

void arc(x, y, radius,startAngle, endAngle, anticlockwise);

用于描繪一個以(x, y)點為圓心,radius為半徑,startAngle為起始弧度,endAngle為終止弧度的圓弧。anticlockwise為布爾型的參數,true表示逆時針,false表示順時針。參數中的兩個弧度以0表示0°,位置在3點鐘方向;Math.PI值表示180°,位置在9點鐘方向。

void quadraticCurveTo(cpx,cpy, x, y);

用于描繪以當前Context繪制起點為起點,(cpx,cpy)點為控制點,(x, y)點為終點的二次樣條曲線路徑。

void bezierCurveTo(cpx1,cpy1, cpx2, cpy2, x, y);

用于描繪以當前Context繪制起點為起點,(cpx1,cpy1)點和(cpx2, cpy2)點為兩個控制點,(x, y)點為終點的貝塞爾曲線路徑。


路徑描繪完成后,需要調用Context對象的fill()和stroke()方法來填充路徑和繪制路徑線條,或者調用clip()方法來剪輯Canvas區域。以上三個方法的原型如下:

void stroke();

用于按照已有的路徑繪制線條。

void fill();

用于使用當前的填充風格來填充路徑的區域。

void clip();

用于按照已有的路線在畫布中設置剪輯區域。調用clip()方法之后,圖形繪制代碼只對剪輯區域有效而不再影響區域外的畫布。如調用之前沒有描繪路徑(即默認狀態下),則得到的剪輯區域為整個Canvas區域。


此外,Context對象還提供了相應的屬性來調整線條及填充風格,如下所示:

strokeStyle

線條的顏色,默認為”#000000”,其值可以設置為CSS顏色值、漸變對象或者模式對象。

fillStyle

填充的顏色,默認為”#000000”,與strokeStyle一樣,值也可以設置為CSS顏色值、漸變對象或者模式對象。

lineWidth

線條的寬度,單位是像素(px),默認為1.0。

lineCap

線條的端點樣式,有butt(無)、round(圓頭)、square(方頭)三種類型可供選擇,默認為butt。

lineJoin

線條的轉折處樣式,有round(圓角)、bevel(平角)、miter(尖角)三種;類型可供選擇,默認為miter。

miterLimit

線條尖角折角的銳利程序,默認為10。


如下的示例分別調用了部分上述方法和屬性來繪制圖形:

復制代碼
代碼如下:

<canvas id="canvas" width="600"height="400">
<p>Your browserdoes not support the canvas element!</p>
</canvas>

<script type="text/javascript">
window.onload = function() {
var canvas =document.getElementById("canvas");
var context2D =canvas.getContext("2d");

//繪制相交的線段
context2D.beginPath();
context2D.moveTo(50,50);
context2D.lineTo(100,100);
context2D.moveTo(200,50);
context2D.lineTo(100,100);
context2D.stroke();
//繪制與這兩條線段相切的紅色圓弧
context2D.beginPath();
context2D.strokeStyle= "#ff0000";
context2D.moveTo(50,50);
context2D.arcTo(100,100, 200, 50, 100);
context2D.stroke();
//繪制一個藍色的圓
context2D.beginPath();
context2D.strokeStyle= "#0000ff";
context2D.arc(300,250, 100, 0, Math.PI * 2, false);
context2D.stroke();
//將上面的圓填充為灰色
context2D.fillStyle ="#a3a3a3";
context2D.fill();
//在上面的圓中剪輯一個圓形方形區域
context2D.beginPath();
context2D.rect(250,200, 100, 100);
context2D.clip();
//在剪輯區域中填充一個大于該區域尺寸的矩形
context2D.fillStyle ="yellow";
context2D.fillRect(0,0, 400, 400);
}
</script>

畫布背景

在上面的例子中,調用了fillRect()方法。實際上,Context對象擁有3個方法可以直接在畫布上繪制圖形而不需要路徑,可以將其視為直接在畫布背景中繪制。這3個方法的原型如下:

void fillRect(left, top,width, height);

用于使用當前的fillStyle(默認為”#000000”,黑色)樣式填充一個左上角頂點在(left, top)點、寬為width、高為height的矩形。

void strokeRect(left, top,width, height);

用于使用當前的線條風格繪制一個左上角頂點在(left, top)點、寬為width、高為height的矩形邊框。

void clearRect(left, top,width, height);

用于清除左上角頂點在(left,top)點、寬為width、高為height的矩形區域內的所有內容。

圖片

Context對象中擁有drawImage()方法可以將外部圖片繪制到Canvas中。drawImage()方法的3種原型如下:

drawImage(image, dx, dy);

drawImage(image, dx, dy,dw, dh);

drawImage(image, sx, sy,sw, sh, dx, dy, dw, dh);

下圖展示了原型中各參數的含義:

其中,image參數可以是HTMLImageElement、HTMLCanvasElement或者HTMLVideoElement。第三個方法原型中的sx、sy在前兩個中均為0,sw、sh均為image本身的寬和高;第二和第三個原型中的dw、dh在第一個中也均為image本身的寬和高。

如下的示例將一張遠程圖片繪制到了畫布中:

復制代碼
代碼如下:

<canvas id="canvas" width="600"height="400">
<p>Your browserdoes not support the canvas element!</p>
</canvas>

<script type="text/javascript">
window.onload = function() {
var canvas =document.getElementById("canvas");
var context2D =canvas.getContext("2d");

var pic = new Image();
pic.src ="http://imgsrc.baidu.com/forum/pic/item/e6b14bc2a4561b1fe4dd3b24.jpg";
context2D.drawImage(pic,0, 0);
}
</script>

以上代碼均通過Google Chrome 14.0及Mozilla Firefox 7.0瀏覽器測試。


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

本篇文章主要介紹了html5如何在Canvas中實現自定義路徑動畫示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
這是一款基于HTML5 SVG制作的路徑過渡動畫幻燈片特效。該幻燈片特效使用SVG路徑來剪裁幻燈片中的圖片,制作出幻燈片切換時不規則的圖形變換效果。,HTML5中國,中國最大的HTML5中文門
SVG剪裁路徑是指根據指定的路徑或形狀來剪裁SVG圖形。應用了剪裁路徑的圖形,在剪裁路徑內部的圖形可以被顯示出來,在剪裁路徑之外的圖形會被隱藏。 ...,HTML5中國,中國最大的H
一條HTML5 canvas路徑是通過繪制指令來連接一系列的點,由這一系列的點構成直線或曲線。路徑可以用于在HTML5 canvas上繪制各種類型的圖形:直線、圓形、多邊形等等。 ...,HTML5中國,中
本次演示提供了一個通過KineticJS空國家使用個SVG路徑資源實現一個世界地圖指示的小案例。當你的鼠標懸浮在某個國家的時候,演示會自動標示出來。HTML CODE!DOCTYPE HTMLhtml head style body
HTML5 Canvas――用路徑描畫線條實例介紹_html5教程技巧HTML5中文學習網,是中國最大的HTML5中文門戶,為廣大HTML5愛好者提供各種HTML5資料,包括HTML5網站、HTML5資訊、HTML5應用、HTML5游戲、
主站蜘蛛池模板: 滚筒线,链板线,总装线,流水线-上海体能机电有限公司 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 别墅图纸超市|别墅设计图纸|农村房屋设计图|农村自建房|别墅设计图纸及效果图大全 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 裹包机|裹膜机|缠膜机|绕膜机-上海晏陵智能设备有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | 消防泵-XBD单级卧式/立式消防泵-上海塑泉泵阀(集团)有限公司 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 北京租车牌|京牌指标租赁|小客车指标出租 | 多功能干燥机,过滤洗涤干燥三合一设备-无锡市张华医药设备有限公司 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 厌氧反应器,IC厌氧反应器,厌氧三相分离器-山东创博环保科技有限公司 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | LHH药品稳定性试验箱-BPS系列恒温恒湿箱-意大利超低温冰箱-上海一恒科学仪器有限公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 |