真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HTML5Canvas怎么繪制一個像素寬的細線

小編給大家分享一下HTML5 Canvas怎么繪制一個像素寬的細線,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)公司:2013年開創(chuàng)至今為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設”服務,為成百上千公司企業(yè)提供了專業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)頁設計和網(wǎng)站推廣服務, 按需規(guī)劃網(wǎng)站由設計師親自精心設計,設計的效果完全按照客戶的要求,并適當?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領先地位的。

正統(tǒng)的HTML5 Canvas中如下代碼

ctx.lineWidth = 1; 
ctx.beginPath(); 
ctx.moveTo(10, 100); 
ctx.lineTo(300,100); 
ctx.stroke();

運行結(jié)果繪制出來的并不是一個像素寬度的線
HTML5 Canvas怎么繪制一個像素寬的細線

感覺怎么好粗啊,跟常常見到的網(wǎng)頁版各種繪制線效果

很不一樣,難道HTML5 Canvas就沒想到搞好點嘛

其實這個根本原因在于Canvas的繪制不是從中間開始的

而是從0~1,不是從0.5~1 + 0~0.5的繪制方式,所以

導致fade在邊緣,看上去線很寬。

解決方法有兩個,一個是錯位覆蓋法,另外一種是中心

平移(0.5,0.5)。實現(xiàn)代碼如下:

錯位覆蓋法我已經(jīng)包裝成一個原始context的函數(shù)

/** 
* 

draw one pixel line

* @param fromX * @param formY * @param toX * @param toY * @param backgroundColor - default is white * @param vertical - boolean */ CanvasRenderingContext2D.prototype.onePixelLineTo = function(fromX, fromY, toX, toY, backgroundColor, vertical) { var currentStrokeStyle = this.strokeStyle; this.beginPath(); this.moveTo(fromX, fromY); this.lineTo(toX, toY); this.closePath(); this.lineWidth=2; this.stroke(); this.beginPath(); if(vertical) { this.moveTo(fromX+1, fromY); this.lineTo(toX+1, toY); } else { this.moveTo(fromX, fromY+1); this.lineTo(toX, toY+1); } this.closePath(); this.lineWidth=2; this.strokeStyle=backgroundColor; this.stroke(); this.strokeStyle = currentStrokeStyle; };

中心平移法代碼如下:

ctx.save(); 
ctx.translate(0.5,0.5); 
ctx.lineWidth = 1; 
ctx.beginPath(); 
ctx.moveTo(10, 100); 
ctx.lineTo(300,100); 
ctx.stroke(); 
ctx.restore();

要特別注意確保你的所有坐標點是整數(shù),否則HTML5會自動實現(xiàn)邊緣反鋸齒

又導致你的一個像素直線看上去變粗了。

運行效果:
HTML5 Canvas怎么繪制一個像素寬的細線

現(xiàn)在效果怎么樣,這個就是HTML5 Canvas畫線的一個小技巧

看完了這篇文章,相信你對HTML5 Canvas怎么繪制一個像素寬的細線有了一定的了解,想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享題目:HTML5Canvas怎么繪制一個像素寬的細線
本文網(wǎng)址:http://weahome.cn/article/gosoih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部