1. 程式人生 > >canvas畫圖和清除圖片

canvas畫圖和清除圖片

在canvas上畫一張圖其實很簡單,就是用drawImgage函式。

定義

這裡先貼上w3c裡的定義和用法:

  1. JavaScript 語法 1 (在畫布上定點陣圖像:)
context.drawImage(img,x,y);
  1. JavaScript 語法 2 (在畫布上定點陣圖像,並規定影象的寬度和高度:)
context.drawImage(img,x,y,width,height);
  1. JavaScript 語法 3 (剪下影象,並在畫布上定位被剪下的部分:)
context.drawImage(img,sx,sy,swidth,sheight,x,y,width
,height);
引數 描述
img 規定要使用的影象、畫布或視訊。
sx 可選。開始剪下的 x 座標位置。
sy 可選。開始剪下的 y 座標位置。
swidth 可選。被剪下影象的寬度。
sheight 可選。被剪下影象的高度。
x 在畫布上放置影象的 x 座標位置。
y 在畫布上放置影象的 y 座標位置。
width 可選。要使用的影象的寬度。(伸展或縮小影象)
height 可選。要使用的影象的高度。(伸展或縮小影象)

以上內容參考自: w3c
也可以去這個w3c上去測試使用方法。

例子程式碼

先貼html的程式碼內容:

<img src="../img/test.jpg" alt="test pic" id="test_img">
    <canvas id="canvasOne"></canvas>

請給canvas設定一下高和寬,然後js程式碼如下:

$(document).ready(function() { //這裡是jquery的ready方法,使用的話請匯入jquery,不想用請用document.load()
        var theCanvas = document.getElementById("canvasOne"
); if (!theCanvas || !theCanvas.getContext) { alert("false"); } // alert($(document).width()); // alert($.browser.version) ctx = theCanvas.getContext("2d"); var test_img = document.getElementById("test_img"); ctx.drawImage(test_img, 20, 20, 300, 300); });

清除drawImage內容

現在我找到的就兩個辦法,一個是fillRect()把內容直接覆蓋掉,一個是clearRect()清除掉內容。

fillRect

這個的使用方法很簡單:

context.fillRect(x,y,width,height);

例子:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillRect(20,20,150,100);

clearRect

這個的使用方法和fillRect極其相似:

context.clearRect(x,y,width,height);

例子:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(0,0,300,150);
ctx.clearRect(20,20,100,50);

就這些~ 其實我是想實現圖片拖動,放大縮小然後剪下的。雖然我已經實現了~ 放到下一篇部落格裡。