HTML5 Canvas畫線技巧-實作繪製一個像素寬的細線_html5教學技巧
canvas
html5
正統的HTML5 Canvas中如下程式碼
複製程式碼
程式碼如下:程式碼如下:
ct lineWidth = 1;
ctx.beginPath();
ctx.lineTo(300,100);
ctx.stroke();

運行結果繪製出來的並不是一個像素寬度的線
感覺怎麼好粗啊,跟常常見到的網頁版各種繪製線效果
很不一樣,難道HTML5 Canvas就沒想到搞好點嘛
其實這個根本原因在於Canvas的繪製不是從中間開始的
而是從0~1,不是從0.5~1 0 ~0.5的繪製方式,所以
導致fade在邊緣,看起來線很寬。
解法有兩個,一個是錯位覆蓋法,另一個是中心
平移(0.5,0.5)。實現代碼如下:
錯位覆蓋法我已經包裝成一個原始context的函數
程式碼如下:
/**
*
畫一條像素線
* @param fromX
* @param formY
* @param toX
* @param toY
* @param backgroundoror - 預設為白色
* @param Vertical - 布林值
*/
CanvasRenderingContext2D.prototype.onePixelLineTo = function(fromX, fromY, toX, toY, backgroundor, verver) { cur = 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();
};
中心平移法代碼如下:
複製代碼
代碼如下:
代碼如下:
代碼如下:
代碼如下:
ctx.save();

ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(10, 100); ctx.lineTo(300,100); ctx.stroke(); ctx.restore(); 要特別注意確保你所有的座標點都是整數,否則HTML5會自動實現邊緣反鋸齒又導致你的一個像素直線看起來變粗了。 運行效果:現在效果怎麼樣,這個就是HTML5 Canvas畫線的一個小技巧 覺得不錯請頂一下。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
如何修復KB5055612無法在Windows 10中安裝?
4 週前
By DDD
<🎜>:種植花園 - 完整的突變指南
3 週前
By DDD
<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)