• <var id="zvtmq"></var>
      <tt id="zvtmq"><pre id="zvtmq"></pre></tt>

      <font id="zvtmq"></font>

      <tt id="zvtmq"></tt>

        <var id="zvtmq"></var>
        <mark id="zvtmq"><pre id="zvtmq"><td id="zvtmq"></td></pre></mark>

        1. 
          

          <var id="zvtmq"><object id="zvtmq"><noscript id="zvtmq"></noscript></object></var><label id="zvtmq"><button id="zvtmq"><address id="zvtmq"></address></button></label>

            <tt id="zvtmq"><wbr id="zvtmq"></wbr></tt>
            <strike id="zvtmq"><output id="zvtmq"></output></strike>

          1. <del id="zvtmq"><wbr id="zvtmq"><meter id="zvtmq"></meter></wbr></del>

          2. <small id="zvtmq"></small>

            <code id="zvtmq"><rt id="zvtmq"></rt></code>
          3. <listing id="zvtmq"><object id="zvtmq"></object></listing>

                  广告

                  canvas 填充覆盖描边

                  2018-10-20 13:18| 作者: admin| 查看: 1331| 评论: 0|来自: 蚂蚁部落

                  填充和描边是canvas中最为基本的操作,本文不做详细介绍。

                  更多内容可以参阅canvas 设置矩形样式一章节。

                  但是有时候,这些操作会带来令人奇怪的现象,比如本文将要介绍的填充覆盖描边。

                  首先看一段代码实例:

                  [HTML] 纯文本查看 复制代码运行代码
                  <!doctype html>
                  <html>
                  <head>
                  <meta charset="utf-8">
                  <meta name="author" content="http://www.pecf.tw/" />
                  <title>蚂蚁部落</title>
                  <script>
                  window.onload=function(){
                    let canvas = document.getElementById("canvas");
                    let ctx = canvas.getContext("2d");
                    ctx.rect(10, 10, 100, 100);
                    ctx.lineWidth=10;
                    ctx.strokeStyle="blue";
                    ctx.fillStyle="red";
                    ctx.stroke();
                    ctx.fill();
                  }
                  </script>
                  </head>
                  <body>
                  <canvas id="canvas" width="300" height="150"></canvas>
                  </body>
                  </html>

                  代码运行效果截图如下:

                  a:3:{s:3:\"pic\";s:43:\"portal/201810/20/131940wzazommkvvmfvf6p.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

                  代码分析如下:

                  (1).lineWidth属性设置描边宽度为10px,也就是边框的厚度。

                  (2).fillStyle属性设置填充颜色为红色。

                  (3).很明显边框的描边宽度没有10px,也就是它很可能被填充遮盖了。

                  原理很简单,canvas绘制线条的时候,并不是沿着它的起始位置向外扩展,而是将这个起始位置作为中线向两侧扩展,这么说可能大?#19968;?#19981;明白,具体参阅canvas lineWidth绘制原理一章节。

                  如果不想出现上述现象,可以采用如下解决方案:

                  [HTML] 纯文本查看 复制代码运行代码
                  <!doctype html>
                  <html>
                  <head>
                  <meta charset="utf-8">
                  <meta name="author" content="http://www.pecf.tw/" />
                  <title>蚂蚁部落</title>
                  <script>
                  window.onload=function(){
                    let canvas = document.getElementById("canvas");
                    let ctx = canvas.getContext("2d");
                    ctx.rect(10, 10, 100, 100);
                    ctx.lineWidth=10;
                    ctx.strokeStyle="blue";
                    ctx.fillStyle="red";
                    ctx.fill();
                    ctx.stroke();
                  }
                  </script>
                  </head>
                  <body>
                  <canvas id="canvas" width="300" height="150"></canvas>
                  </body>
                  </html>

                  代码运行效果截图如下:

                  a:3:{s:3:\"pic\";s:43:\"portal/201810/20/132017vle5dmjfl13evdkv.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

                  上述代码的表现已经恢复正常,很简单只要将ctx.fill方法和ctx.stroke方法调整一下位置即可。

                  也就是先填充再描边,那么描边就会覆盖在填充之上,后来者居上,很轻松解决此问题。

                  在网上也有关于此方面的解决方案,最?#27809;?#26159;要了解出现此问题的原理。

                  可以做到举一反三,而不是头痛医?#26041;?#30171;医脚,仅浮在表面。

                  更多canvas知识可以参阅canvas教程板块。


                  鲜花

                  握手

                  雷人

                  路过

                  鸡蛋

                  最新评论

                  返回顶部
                1. <var id="zvtmq"></var>
                    <tt id="zvtmq"><pre id="zvtmq"></pre></tt>

                    <font id="zvtmq"></font>

                    <tt id="zvtmq"></tt>

                      <var id="zvtmq"></var>
                      <mark id="zvtmq"><pre id="zvtmq"><td id="zvtmq"></td></pre></mark>

                      1. 
                        

                        <var id="zvtmq"><object id="zvtmq"><noscript id="zvtmq"></noscript></object></var><label id="zvtmq"><button id="zvtmq"><address id="zvtmq"></address></button></label>

                          <tt id="zvtmq"><wbr id="zvtmq"></wbr></tt>
                          <strike id="zvtmq"><output id="zvtmq"></output></strike>

                        1. <del id="zvtmq"><wbr id="zvtmq"><meter id="zvtmq"></meter></wbr></del>

                        2. <small id="zvtmq"></small>

                          <code id="zvtmq"><rt id="zvtmq"></rt></code>
                        3. <listing id="zvtmq"><object id="zvtmq"></object></listing>

                                快乐10分破解如何计算
                              1. <var id="zvtmq"></var>
                                  <tt id="zvtmq"><pre id="zvtmq"></pre></tt>

                                  <font id="zvtmq"></font>

                                  <tt id="zvtmq"></tt>

                                    <var id="zvtmq"></var>
                                    <mark id="zvtmq"><pre id="zvtmq"><td id="zvtmq"></td></pre></mark>

                                    1. 
                                      

                                      <var id="zvtmq"><object id="zvtmq"><noscript id="zvtmq"></noscript></object></var><label id="zvtmq"><button id="zvtmq"><address id="zvtmq"></address></button></label>

                                        <tt id="zvtmq"><wbr id="zvtmq"></wbr></tt>
                                        <strike id="zvtmq"><output id="zvtmq"></output></strike>

                                      1. <del id="zvtmq"><wbr id="zvtmq"><meter id="zvtmq"></meter></wbr></del>

                                      2. <small id="zvtmq"></small>

                                        <code id="zvtmq"><rt id="zvtmq"></rt></code>
                                      3. <listing id="zvtmq"><object id="zvtmq"></object></listing>

                                            1. <var id="zvtmq"></var>
                                                <tt id="zvtmq"><pre id="zvtmq"></pre></tt>

                                                <font id="zvtmq"></font>

                                                <tt id="zvtmq"></tt>

                                                  <var id="zvtmq"></var>
                                                  <mark id="zvtmq"><pre id="zvtmq"><td id="zvtmq"></td></pre></mark>

                                                  1. 
                                                    

                                                    <var id="zvtmq"><object id="zvtmq"><noscript id="zvtmq"></noscript></object></var><label id="zvtmq"><button id="zvtmq"><address id="zvtmq"></address></button></label>

                                                      <tt id="zvtmq"><wbr id="zvtmq"></wbr></tt>
                                                      <strike id="zvtmq"><output id="zvtmq"></output></strike>

                                                    1. <del id="zvtmq"><wbr id="zvtmq"><meter id="zvtmq"></meter></wbr></del>

                                                    2. <small id="zvtmq"></small>

                                                      <code id="zvtmq"><rt id="zvtmq"></rt></code>
                                                    3. <listing id="zvtmq"><object id="zvtmq"></object></listing>

                                                            一码中特新闻发布会 2019波叔一波中特 时时彩 华东15选5百度百科 30选5今天开奖号码查询 福建36选7开奖结果今天期 排列五走势图2 ag真人接口克隆 彩票计算中奖号码 精准一尾中特资料 老11选5定胆技巧 排列三组三走势图三 内蒙古快3彩票走势图 重庆幸运农场开奖直播 围棋是怎么下的