先在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 具備凸凹效果的紡織物圖案
上面的紡織物圖案比較簡單,無論是橫線仍是豎線,直線間間隔均爲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 按三角函數分佈的紡織物圖案