日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Canvas入门06-线段与像素边界

發布時間:2023/11/29 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Canvas入门06-线段与像素边界 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們知道,使用以下2個API可以繪制一條線段:

  • moveTo(x, y) 向當前路徑中增加一條子路徑,該子路徑只包含一個點,此為線段的起始點
  • lineTo(x, y) 將線段的下一個點加入子路徑中
context.strokeStyle = 'rgb(200, 200, 0)'; context.lineWidth = 1; context.beginPath(); context.moveTo(0, 50); context.lineTo(450, 50); context.stroke();

但是你會發現,這條線段的寬度并不是1px,而是2px。

再畫一條寬度為2px的線段。

context.lineWidth = 2; context.beginPath(); context.moveTo(0, 60); context.lineTo(450, 60); context.stroke();

這條線段寬度與第一條相同,只是顏色更深一些。

再畫一條寬度為1px的線段。

context.lineWidth = 1; context.beginPath(); context.moveTo(0, 70.5); context.lineTo(450, 70.5); context.stroke();

可以看到,寬度確實比前兩條線段窄。

為什么第一條線段的寬度不是1px呢?

這與canvas的繪制邏輯有關,當我們試圖繪制一個線段時,canvas會讀取lineWidth,,然后嘗試將在坐標處兩邊各繪制一半的lineWidth,比如在坐標(0,2)繪制一條水平線,canvas會以坐標2 為中線,向上向下各繪制0.5px。但是,在1px之內,不可能只繪制0.5px,所以,它會繼續延伸,填滿整個像素。最后,加在一起就是2px了。

如果,將坐標點換成(0,1.5),沿著中心線繪制后,正好填滿了整個像素,所以沒有延伸。最后寬度就是1px。

建議

在實際應用中,如果想得到更好的體驗,精確的像素值,如果線段的寬度是奇數像素,繪制時以n.5,即半數像素作為中軸線,如果線段的寬度為偶數像素,繪制時以n.0,即整數像素作為中軸線

參考博客:

https://www.cnblogs.com/v-rockyli/p/3833845.html

轉載于:https://www.cnblogs.com/liulei-cherry/p/9915182.html

總結

以上是生活随笔為你收集整理的Canvas入门06-线段与像素边界的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。