麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

詳解Html5 Canvas畫線有毛邊解決方法

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

Html5 Canvas 所有的畫線指令畫出來的線條都有毛邊(比如 lineTo, arcTo,strokeRect),這是因為在Canvas中整數坐標值對應的位置恰巧是屏幕象素點中間的夾縫,那么當按這樣的坐標進行線條渲染時所要用到的就是夾縫兩邊的象素點,這樣即便設置了lineWidth為1也將看到兩個象素效果的線條,解決方法原象素點+0.5進行偏移。

下面是處理前后的效果比較:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  <html>  <head>      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">      <title>canvasTest</title>      <script type="text/javascript" src="http://www.pyzy.net/Demo/html5_cancas_js/excanvas.js"></script>      <script type="text/javascript">          var MyCanvas = function(boxObj, width, height) {              //序號、計數              this.index = arguments.callee.prototype.Count = (arguments.callee.prototype.Count || 0) + 1;              var cvs = document.createElement("canvas");              cvs.id = "myCanvas" + this.index;              cvs.width = width || 800;              cvs.height = height || 600;              (boxObj || document.body).appendChild(cvs);              //excanvas框架中針對ie加載canvas延時問題手動初始化對象              if (typeof G_vmlCanvasManager != "undefined") G_vmlCanvasManager.initElement(cvs);              //2D畫布對象              this.ctx = cvs.getContext("2d");              /* * 繪制線條              * @ops JSON對象,可按實際支持屬性擴展,示例:  { lineWidth:1,strokeStyle:'rgb(255,255,255)' }                    * @dotXY:{ x:0, y:0 } ||[{ x:0, y:0 },{ x:0, y:0 }]              */              this.drawLine = function(dotXY, ops) {                  this.ctx.beginPath();                   for (var att in ops) this.ctx[att] = ops[att];                  dotXY = dotXY.constructor == Object ? [dotXY || { x: 0, y: 0}] : dotXY;                  this.ctx.moveTo(dotXY[0].x, dotXY[0].y);                  for (var i = 1, len = dotXY.length; i < len; i++) this.ctx.lineTo(dotXY[i].x, dotXY[i].y);                  this.ctx.stroke();              };          };          window.onload=function(){              var c1 = new MyCanvas();              c1.drawLine([{ x: 10, y: 10 }, { x: 10, y: 200 }],{lineWidth:2,strokeStyle:'rgb(0,0,0)'});              c1.drawLine([{ x: 11, y: 10 }, { x: 11, y: 200 }],{lineWidth:2,strokeStyle:'rgb(255,255,255)'});              c1.drawLine([{ x: 100, y: 10 }, { x: 100, y: 200 }],{lineWidth:1,strokeStyle:'rgb(0,0,0)'}); //普通線              c1.drawLine([{ x: 200.5, y: 10 }, { x: 200.5, y: 200 }],{lineWidth:1,strokeStyle:'rgb(0,0,0)'}); //+0.5偏移             }           </script>  </head>  <body>  ↓ 處理的  ↓ 普通的  ↓ +0.5偏移的<br />  </body>  </html>  

Html5,Canvas,畫線,毛邊

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。

 

注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产资源视频在线观看 | 久草在线视频免费播放 | 羞羞视频免费观看入口 | 久久精品一二三区 | 伦一区二区三区中文字幕v亚洲 | 精品国产乱码久久久久久丨区2区 | 一区二区三区欧美日韩 | 黄色的视频在线观看 | 久久久一区二区三区视频 | 免费黄色大片在线观看 | 日韩欧美精品电影 | 91麻豆蜜桃一区二区三区 | 91精品国产综合久久久欧美 | 天天操很很操 | 国产一级免费片 | 色就操| 日韩视频在线不卡 | 日本黄色大片免费观看 | 在线看一级片 | 国产亚洲精品久久久久婷婷瑜伽 | 国产黄色一区二区 | 久久艹精品视频 | 妇女毛片 | 一本一本久久a久久精品综合小说 | 色天使中文字幕 | 男人久久天堂 | 99r国产精品 | av电影手机在线看 | 免费a视频 | 色网站综合 | 亚洲一区二区三区视频 | 欧美日比视频 | 国语自产免费精品视频在 | 成人444kkkk在线观看 | 黑人一级片视频 | 国产亚洲精品久久久久久网站 | 日韩黄色一级视频 | 免费欧美一级视频 | 亚洲射吧 | 亚洲午夜久久久精品一区二区三区 | 日本在线观看中文字幕 |