canvas基礎 矩形

2021-08-15 05:19:18 字數 2909 閱讀 7218

上回我們了解了線條,由線→面,今天我們來說**矩形**

畫矩形之前呢,我們先思考如何才能畫乙個矩形?很簡單,就是四條線段湊到一起,圍成乙個面,那麼我們在寫的時候是不是真的要畫四條直線呢?當然不要---確定初始位置,改變終點位置,三次就好。

備註:一下我們畫圖形,都是按照順時針畫的喲。

還是按照我們之前學畫直線的方法:

獲取元素mycanvas

呼叫方法:getcontext("2d");

開始路徑:ele.beginpath();

確定起點位置:ele.moveto(x,y);

終點位置(至少三個,才能圍成矩形)。:ele.lineto(x,y);

(設定相關樣式--線寬、線的顏色可以根據自己喜好)

渲染圖形:ele.stroke();(必須的)。

封閉圖形:ele.closepath();//這個close與begin沒有關係,知識為了形成閉合圖形(其實就是為了少寫乙個lineto(終點即原點x,終點即原點y);)

完成了上述步驟,乙個矩形就畫好了。那麼我們來做乙個小練習,

實現下圖效果:

![螢幕快照 2017-12-27 下午8.20.27.png](

```var mycanvas = document.getelementbyid("mycanvas");

var context = mycanvas.getcontext("2d");

var arr = ["red","blue","yellow","pink"];

for (var i = 0;icontext.moveto(num,num);

context.lineto(200+num,num);

context.lineto(200+num,80+num);

context.lineto(num,80+num);

context.fillstyle  = arr[i];

context.fill();

}```

到這裡我們的練習就完成了。

這裡就要說說兩種**不同的方法**畫出來的**不同效果**的矩形:

* 鏤空矩形:用到stroke();

```context.beginpath();

context.moveto(30,30);

context.lineto(200+30,30);

context.lineto(200+30,80+30);

context.lineto(30,80+30);

//這裡就看出來context.closepath();的重要性了,不加為圖1,加了才為圖2,

context.closepath();

context.strokestyle = 'red';

context.stroke();

```圖1:

![圖1](

圖2:![螢幕快照 2017-12-27 下午8.39.07.png](

* 實心矩形:用到fill();

```context.beginpath();

context.moveto(30,30);

context.lineto(200+30,30);

context.lineto(200+30,80+30);

context.lineto(30,80+30);

//既然是實心的,那麼closepath();方法就不用了

context.fillstyle = 'red';

context.fill();

```結果如圖3:![螢幕快照 2017-12-27 下午8.43.40.png](

其實我想說的事畫矩形,除了上述方法,還有fillrect(),以及rect();

* fillrect();

```context.beginpath();

context.fillstyle = "red";

//四個引數分別是(位於x軸座標,位於y軸座標,width,height);

context.fillrect(100,100,200,150);

```* rect();

```context.beginpath();

context.fillstyle = "red";

//引數和fillrect();一樣

context.rect(100,100,200,150);

context.fill();

```至於得到的結果:效果都如圖3所示。

那提到了rect();就不得不說乙個方法:**ispointinpath(x,y);**

加入我們要判斷某個點是不是在我們所畫的圖形內部,就可以呼叫該方法,知識這個方法有一定的限制:

```//只有通過context.rect(0,0,50,50);畫出來的圖形才能進行判斷,

//但是context.fillrect(20,20,100,100);畫出來的圖形不能進行判斷

if(context.ispointinpath(51,51))else

```一定要注意哦:使用該方法,只能判斷當前所處的位置是否在圖形內。

再來乙個小效果:繪製**簡易棋盤** :

先看看效果:![螢幕快照 2017-12-27 下午9.02.21.png](

**如下:

```    var mycanvas = document.getelementbyid("mycanvas");

var context = mycanvas.getcontext("2d");

var color = "";

for (var i=0;i<8;i++)

else

context.beginpath();

context.fillstyle = color;

context.fillrect(0+j*50,0+i*50,50,50);}}

```

Canvas繪製矩形

context.rect x y width height 規劃了矩形的路徑 context.fillrect x y width height 根據fillstyle繪製出乙個填充的矩形 context.strokerect x y width height 根據strokestyle繪製出乙個矩...

canvas繪製矩形

1.繪製乙個填充的矩形 fillrect x,y,width,height 2.繪製乙個矩形的邊框 strokerect x,y,width,height 3.清除指定矩形區域,讓清除部分完全透明 clearrect x,y,width,height 其中x y是相對於畫布左上角0,0 的距離,wi...

Canvas 元素繪製矩形

使用canvas元素,必須先設定 width 和 height 屬性,指定可以繪圖的區域大小。要在這塊畫布上繪圖,需要取得繪圖上下文。而取得繪圖上下文物件的引用,需要呼叫 getcontext 方法並傳入上下文的名字。傳入 2d 就可以取得2d上下文物件。與矩形相關的方法包括 fillrect st...