JavaScript圖形實例:紡織物圖案

1.簡單紡織物圖案

        先在HTML頁面中設置一個畫布。javascript

        <canvas id="myCanvas" width="360" height="240">html

        </canvas>java

        再在定義的這塊360*240的canvas(畫布)上面用二重循環繪製紡織物圖案。canvas

        繪製圖案的基本思想是:將畫布分紅6行8列的子塊,即每一個子塊的寬度爲60,高度爲30。在每一個子塊中按規律交錯地繪製11條橫線或21條豎線。瀏覽器

        可編寫以下的HTML代碼。函數

<!DOCTYPE html>htm

<head>blog

<title>簡單紡織物圖案</title>ip

<script type="text/javascript">get

  function draw(id)

  {

     var canvas=document.getElementById(id);

     if (canvas==null)

        return false;

     var context=canvas.getContext('2d');

     context.fillStyle="#EEEEFF";

     context.fillRect(0,0,400,300);

     context.strokeStyle="red";

     context.lineWidth=1;

     context.beginPath();

     var i=0,j=0;

     for (px=0;px<360;px+=60)

     {

         i++;

         for (py=0; py<240; py+=30)

         {

            j=j%6+1;

            if (i%2==j%2)

            {

               for (k=0;k<=30;k+=3)

               {

                  context.moveTo(px,py+k);

                  context.lineTo(px+60,py+k);

               }

            }

            else

            {

               for (k=0;k<=60;k+=3)

               {

                  context.moveTo(px+k,py);

                  context.lineTo(px+k,py+30);

               }

            }

         }

     }

     context.closePath();

     context.stroke();

  }

</script>

</head>

<body onload="draw('myCanvas');">

<canvas id="myCanvas" width="360" height="240">您的瀏覽器不支持canvas!

</canvas>

</body>

</html>

        將上述HTML代碼保存到一個html文本文件中,再在瀏覽器中打開包含這段HTML代碼的html文件,能夠看到在瀏覽器窗口中繪製出如圖1所示的簡單紡織物圖案。

 

圖1  簡單紡織物圖案

        由圖1看出,在簡單紡織物圖案中,每一個小塊之間的分割線條很明顯。若將JavaScript程序中的循環語句「for (k=0;k<=30;k+=3)」改寫爲「for (k=0;k<30;k+=3)」,即若是繪製橫線,只繪製10條;再將循環語句「for (k=0;k<=60;k+=3)」改寫爲for (k=0;k<60;k+=3),即若是繪製豎線,只繪製20條。再在瀏覽器中打開修改後的HTML文件,顯示出一個具備凸凹效果的紡織物圖案,如圖2所示。

 

 圖2 具備凸凹效果的紡織物圖案

2.按三角函數分佈的紡織物圖案

        上面的紡織物圖案比較簡單,無論是橫線仍是豎線,直線間間隔均爲3,可否將直線的繪製間隔按某種規律分佈呢?考慮採用三角函數計算直線的分佈間隔,可從新編寫HTML代碼以下。

<!DOCTYPE html>

<head>

<title>按三角函數分佈的紡織物圖案</title>

<script type="text/javascript">

  function draw(id)

  {

     var canvas=document.getElementById(id);

     if (canvas==null)

        return false;

     var context=canvas.getContext('2d');

     context.fillStyle="#EEEEFF";

     context.fillRect(0,0,400,300);

     context.strokeStyle="red";

     context.lineWidth=1;

     context.beginPath();

     var i=0,j=0;

     for (px=0;px<360;px+=60)

     {

         i++;

         for (py=0; py<240; py+=30)

         {

            j=j%6+1;

            if (i%2==j%2)

            {

               for (k=0;k<=15;k++)

               {

                  y=30-30*Math.sin(k*Math.PI/15);

                  context.moveTo(px,py+y);

                  context.lineTo(px+60,py+y);

               }

            }

            else

            {

               for (k=0;k<=25;k++)

               {

                  x=30-30*Math.cos(k*Math.PI/25);

                  context.moveTo(px+x,py);

                  context.lineTo(px+x,py+30);

               }

            }

         }

     }

     context.closePath();

     context.stroke();

  }

</script>

</head>

<body onload="draw('myCanvas');">

<canvas id="myCanvas" width="360" height="240">您的瀏覽器不支持canvas!

</canvas>

</body>

</html>

        在瀏覽器中打開包含這段HTML代碼的html文件,能夠看到在瀏覽器窗口中繪製出如圖3所示的紡織物圖案。

 

圖3  按三角函數分佈的紡織物圖案

相關文章
相關標籤/搜索