1. 程式人生 > >畫布day3繪製圖片

畫布day3繪製圖片

做動畫

繪製圖片

  • drawImage()
    • 三個引數drawImage(img,x,y)
      • img 圖片物件、canvas物件、video物件
      • x,y 圖片繪製的左上角
    • 五個引數drawImage(img,x,y,w,h)
      • img 圖片物件、canvas物件、video物件
      • x,y 圖片繪製的左上角
      • w,h 圖片繪製尺寸設定(圖片縮放,不是擷取)
    • 九個引數drawImage(img,x,y,w,h,x1,y1,w1,h1)
      • img 圖片物件、canvas物件、video物件
      • x,y,w,h 圖片中的一個矩形區域
      • x1,y1,w1,h1 畫布中的一個矩形區域

序列幀動畫

  • 繪製精靈圖
  • 動起來
  • 控制邊界
  • 鍵盤控制

座標變換

  • 平移 移動畫布的原點
    • translate(x,y) 引數表示移動目標點的座標
  • 縮放
    • scale(x,y) 引數表示寬高的縮放比例
  • 旋轉
    • rotate(angle) 引數表示旋轉角度

html程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
<body>
<script>
        //用法1:三個引數
        // 第一個引數:圖片物件,後兩個引數:圖片在畫布中的位置 x,y
         ctx.drawImage(img,100,100);

        //用法2:五個引數 第四個,五個表示圖片的寬高,不是裁剪 ,是縮放

         ctx.drawImage(img,100,100,200,200);

        //用法三:9個引數
        // 第一組 :圖片上的定位座標(x,y) -----就是說從圖片的那個位置開始擷取
        //第二組:擷取圖片區域的寬高 w,h;
        //第三組:繪製圖片在畫布中的位置(x,y) -------就是說圖片在畫布的那個位置顯示
        //第三組:在畫布中圖片的寬高w,h-------如果和第二組大小一樣,就不縮放,如果比第二組大,就放大
        ctx.drawImage(img,134,129,200,200,100,100,200,200);
    };
</script>
</body>
</html>

 圖片物件

 

為什麼要引入圖片物件?

因為做遊戲的時候必定會引入很多圖片,而引入很多圖片用DOM的方式引入,那麼就會使得頁面上存在很多圖片,哪怕是隱藏起來,那這些圖片也還在頁面上,顯得累贅

引入圖片物件方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas{
            border: 1px solid red;
            margin: 100px auto;
            display: block;
        }
    </style>
</head>
<body>
<canvas width="600" height="600"></canvas>
<script>
    //獲取畫布
    var canvas =  document.querySelector('canvas');
    //獲取畫布上下文,創造一個環境
    var ctx = canvas.getContext('2d');
    var img = new Image();
    img.onload = function () {

        // 不需要在頁面上(DOM),圖片多了,顯得累贅,哪怕影藏,這張圖片也在玉面上,所以只需要放在記憶體上
        // 所以需要載入圖片
        var img = document.createElement('img');
        img.src = 'image/01.jpg';

        // 當圖片沒有載入完,是獲取不到圖片的,所以必須等圖片載入完
        //由於有載入順序,有的瀏覽器圖片可能載入完了,再繫結,沒必要了,為了相容,所以把載入事件寫在前面
        img . onload = function (){
            //一定可以使用
        };
        img.src = 'image/01.jpg';
    };
    // 載入圖片,新增src屬性
    img.src = 'image/image/01.jpg';
</script>
</body>

一種是通過creatElement建立

一種是通過建立物件的方式建立(建議用這種)