那位大神,有何好方法能使中間空白角去除,保留四邊圓角
<!DOCTYPE html>
<html>
<head>
??? <meta charset="UTF-8">
??? <title></title>
</head>
<body>
??? <canvas id="canvas" style ="divplay:block;margin:0 auto;border:1px solid #aaa;"><!--顯示畫布框架-->
??????? 當前瀏覽器不支持Canvas,請更換瀏覽器后再試
??? </canvas>
<script>
??? window.onload = function(){
???? var canvas = document.getElementById("canvas") //通過Id("canvas")與畫布連接,必須
??? ?
??????????? canvas.width = 800??????????? //畫布寬 紅邑為可修改,下同
??????????? canvas.height = 800?????????? //畫布高
???? var context = canvas.getContext("2d")?? //設置畫布上下文環境,必須
for (var j = 0; j < 4; j++) {
??????? for (var i = 0; i < 4; i++) {
?????????? drawRect(context,20+i*100,20+j*100,100,100,7,10,"#058","red")? //起點(20,20),長寬100,半徑7,線寬10
??????????? }
?????? }
}
?function? drawRect(cxt,x0,y0,width,height,r,bordrwidth,bordrColor,fillColor){?? //將上行參數值傳遞到運行的函數后運行{}內的語句
???? cxt.save()
???? cxt.translate(x0,y0);???? //位移
???? cxt.beginPath();
?? ? cxt.arc(width-r,height-r,r,0,Math.PI/2);//從右下角起繪右下角圓角狀態
?? ? cxt.lineTo(r,height);//底直線
?? ? cxt.arc(r,height-r,r,Math.PI/2,Math.PI);//左下角
???? cxt.lineTo(0,r);//左直線
???? cxt.arc(r,r,r,Math.PI,Math.PI*3/2);//左上角
???? cxt.lineTo(width-r,0);//頂直線
???? cxt.arc(width-r,r,r,Math.PI*3/2,Math.PI*2);//右上角
???? cxt.closePath(); ?
?? ? cxt.restore();
?? ? cxt.lineWidth = bordrwidth;
???????????? cxt.fillStyle =fillColor;
?? ??? ??? ? cxt.strokeStyle = bordrColor;?? //設置線色狀態
?? ??? ??? ?
?? ??? ??? ?cxt.fill();??????????????? //執行填充色,注因context己傳遞為cxt,故為cxt.fill();不是context.fill();丁
?? ??? ??? ?cxt.stroke();???????????? //執行繪線
?}
</script>?? ?
?? ?
</body>
</html>
2016-12-08
你可以先把底層藍色直接fill一個大的圓角矩形, 之后再把紅色的小圓角矩形貼上去就不會出現那些白色東西了,反正你做2048的畫 直接控制里面的小圓角矩形就可以了
2016-12-14
是個好辦法,當修改循環時可以改變小格數量,不用再次繪一大方復蓋,多謝