亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因

2024-08-26 00:16:08
字體:
來源:轉載
供稿:網友

點評:上次我們講到,canvas有時候會出現1像素的線條模糊不清且好像更寬的情況,這樣的線條顯然不是我們想要的。這篇文章的目的就是弄清楚里面的原理,以及解決它,感興趣的朋友可以了解下哦

接上一篇canvas畫線條教程
上次我們講到,canvas有時候會出現1像素的線條模糊不清且好像更寬的情況,如下圖:

html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因

 
這樣的線條顯然不是我們想要的。
這篇文章的目的就是弄清楚里面的原理,以及解決它。
大家都知道屏幕上最小的顯示尺寸就是1像素,雖然小于1像素的東西可能顯示不出來,但計算機可不管,他會試著畫一下。
其實像素終究來說也是一個單位,假如我們把畫布放大到足夠大,足以看清楚每個像素,會是什么情況呢?大概是這個樣子:

html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因


每個像素都有起止范圍,如圖所示,他們的范圍從左起,跨過1像素,到右止。
如果我們畫1像素線條的時候,遵循像素的起止范圍,那么我們肯定能得到一個很標準的細線。如下:

html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因


但遺憾的是canvas的線條畫法不一樣,上一篇文章我們已經說了,canvas的每條線都有一條無限細的“中線”,線條的寬度是從中線向兩側延伸的。如果我們還是從第2個像素點畫一條線,那么線條的中線就會靠齊到第2個像素的起點,然后我們開始畫了,問題也就來了:Canvas 的線條以中線向兩側延伸,而不是向某一邊延伸(比如這里,如果只是往右側延伸,那么我們的問題就不再是問題了),延伸過后我們的線條實際上是這樣的:

html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因


此時又有個問題:計算機不允許出現小于1px的圖形,所以他做了一個折中的事:把這兩個像素都繪制了。
所以,如此一來,本來1px的線條,就成了看起來2px寬的線條。
失敗的原因找到了:Canvas中的line把中線與像素的起點對齊了,而不是像素的中間點。
那么我們怎么解決這個蛋疼的問題?也許有人已經想到了:既然是因為兩個的起點不一樣,那我們就把他們的起點變得一樣吧!
我們讓線條的中線和像素的中間點對齊就行了!
像素的中間點很好找,比如第2像素的中間點,依據圖上的解釋就是1.5像素的位置,那么x像素的中間點就是(x-0.5)px。

html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因


 
當然,在不很嚴謹的場合,你使用x+0.5也是可以的。
現在我們在canvas上試試我們的研究結果。

復制代碼

代碼如下:


ctx.moveTo(100.5,100.5);
ctx.lineTo(200.5,100.5);
ctx.lineTo(200.5,200.5);
ctx.lineTo(100.5,200.5);
ctx.lineTo(100.5,100.5);
ctx.closePath();
ctx.lineWidth = 1;
ctx.strokeStyle = 'rgba(255,0,0,0.5)';
ctx.stroke();


html5 Canvas畫圖教程(3)—canvas出現1像素線條模糊不清的原因


看起來對了吧?
不過貌似這樣一來我們畫線的時候就非常糾結,難道每次都去加這個讓人郁悶的0.5?當然不是,因為我們大部分時間都是用變量保存值的,就不用給每個值加0.5 了
而且,對于lineWidth>1 的線,我們也不用管它:因為只有線條寬1px的時候,這個問題才最明顯。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人亚洲综合色就1024| 国产精品日韩欧美| 亚洲精品视频在线播放| 日韩精品高清视频| 亚洲欧美在线看| 欧美精品性视频| 免费av在线一区| 91国内精品久久| 欧美成人h版在线观看| 欧美国产视频日韩| 亚洲女同精品视频| 欧美在线xxx| 亚洲欧美资源在线| 欧美性videos高清精品| 欧美国产一区二区三区| 国产99久久精品一区二区 夜夜躁日日躁| 秋霞av国产精品一区| 亚洲高清久久久久久| 青草青草久热精品视频在线网站| 久久国产精品偷| 国产精品99免视看9| 欧美成人午夜激情视频| 91亚洲永久免费精品| 国产精品第1页| 色av吧综合网| 91牛牛免费视频| 精品久久久免费| 欧美精品videos| 在线激情影院一区| 色琪琪综合男人的天堂aⅴ视频| 久久久久久久香蕉网| 欧美黑人狂野猛交老妇| 日韩av网址在线观看| 欧美猛交ⅹxxx乱大交视频| 日韩国产精品亚洲а∨天堂免| 亚洲图片在区色| 乱亲女秽乱长久久久| 国产精品精品视频一区二区三区| 精品动漫一区二区| 成人www视频在线观看| 日韩精品极品毛片系列视频| 91美女片黄在线观| 精品久久久久久中文字幕大豆网| 久久欧美在线电影| 国产精品一区电影| 国产午夜精品理论片a级探花| 91精品视频观看| 国产精品久久婷婷六月丁香| 日本精品一区二区三区在线| 国产精品高潮呻吟久久av黑人| 日韩在线www| 青青青国产精品一区二区| 国产日韩中文在线| 7777精品久久久久久| 欧美丝袜美女中出在线| 9.1国产丝袜在线观看| 亚洲国产女人aaa毛片在线| 久热精品视频在线免费观看| 欧美又大又粗又长| 欧美大片在线免费观看| 91国偷自产一区二区三区的观看方式| 国产日韩视频在线观看| 国产一区二区日韩精品欧美精品| 久久久久中文字幕2018| 91亚洲精品在线观看| 麻豆一区二区在线观看| 国产主播在线一区| 国产成人精品优优av| 中文字幕亚洲二区| 国产剧情久久久久久| 疯狂蹂躏欧美一区二区精品| 精品国产一区二区三区久久狼5月| 国产精品6699| 亚洲精品成人免费| 日韩美女免费线视频| 91中文字幕在线观看| 在线观看不卡av| 欧美成人第一页| 久久99亚洲精品| 亚洲人成网站777色婷婷| 国产做受69高潮| 亚洲国产精品人久久电影| 欧美一性一乱一交一视频| 亚洲毛片在线观看.| 亚洲电影免费观看| 亚洲欧美另类国产| 清纯唯美亚洲激情| 国产精品久久久久久亚洲调教| 欧美高清视频免费观看| 日韩精品视频中文在线观看| 国产一区二区三区四区福利| 57pao成人国产永久免费| 欧美激情精品在线| 亚洲电影第1页| 国产乱肥老妇国产一区二| 97精品免费视频| 久久理论片午夜琪琪电影网| 91精品国产91久久久久久| 欧美成人国产va精品日本一级| 国产91成人video| 欧美精品在线看| 日韩精品极品在线观看播放免费视频| 日韩免费av一区二区| 日本成人激情视频| 亚洲激情在线观看| 不卡伊人av在线播放| 精品国产精品三级精品av网址| 国产精品久久久久久久久久ktv| 91九色综合久久| 成人国产精品av| 久久久国产一区二区三区| 中文字幕少妇一区二区三区| 欧美性猛交xxxx黑人猛交| 欧美日本精品在线| 日韩av电影在线网| 欧美日韩激情视频| 欧美激情精品久久久久久蜜臀| 亚洲精品视频播放| 日韩av在线播放资源| 岛国av一区二区| 欧美尺度大的性做爰视频| 亚洲精品第一页| 欧美多人爱爱视频网站| 日韩av在线免费播放| 92看片淫黄大片欧美看国产片| 亚洲japanese制服美女| 91国内精品久久| 久久精品视频中文字幕| 日韩在线欧美在线国产在线| 亚洲视频在线视频| 丰满岳妇乱一区二区三区| 国产精品久久久久影院日本| 成人免费看片视频| 91欧美精品午夜性色福利在线| 日韩成人在线视频观看| 亚洲无限乱码一二三四麻| 欧美电影免费观看电视剧大全| 国产精品专区h在线观看| 欧美性做爰毛片| 亚洲午夜精品久久久久久性色| 色悠悠国产精品| 亚洲欧美日韩在线高清直播| 日韩男女性生活视频| 亚洲第一视频在线观看| 亚洲一区二区自拍| 欧美性猛交xxxx乱大交蜜桃| 亚洲**2019国产| 久久91超碰青草是什么| www.日韩av.com| 这里精品视频免费| 欧美一级淫片videoshd| 国产91成人在在线播放| 欧美高清在线视频观看不卡| 北条麻妃一区二区在线观看| 精品美女永久免费视频| 九色成人免费视频| 亚洲大胆人体视频| 97热在线精品视频在线观看| 欧日韩在线观看| 欧美日韩国产影院| 欧美丰满少妇xxxxx| 欧美多人乱p欧美4p久久| 精品视频久久久久久久| 伊人成人开心激情综合网|