1. 程式人生 > >Html5 Canvas初探學習筆記(13) -圖片變換

Html5 Canvas初探學習筆記(13) -圖片變換

小滿(bill man)個人原創,歡迎轉載,轉載請註明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man

之前的圖形變換中的那些操作的狀態值,在圖片操作裡依然有用,雖然像縮放這樣的操作我們在繪製的時候就可以實現,不過這依然是一種實現的方法

1.圖片的平移,效果如下:


程式碼如下:

var image = new Image();

image.src = "grossini.png";

image.onload = function(){

   context.drawImage(image,50,50);

   context.translate(100,100);

   context.drawImage(image,50,50);

}

和圖形操作一樣,在平移之後,我們給的座標值都會發生相應的偏移,同樣的也可以使用矩陣方法來實現。程式碼如下:

var image = new Image();

image.src = "grossini.png";

image.onload = function(){

   context.drawImage(image,50,50);

   context.transform(1,0,0,1,100,100);

   //context.transform(0,1,1,0,100,100);

   context.drawImage(image,50,50);

}

同樣的,注掉的那句transform和沒有注掉的transform效果是一樣的,從整體上前四個引數負責縮放和旋轉,後兩個引數是平移,前四個引數14為一組控制縮放,23

為一組控制旋轉,12x值,34y值,56分別為x,y的平移,這裡之所以要在14這組和23這組中的一組裡寫1,是因為我們要保證矩形不被縮放,如果是0的話則大小被縮放為0

2.縮放圖片

效果如下:


程式碼如下:

image.onload = function(){

   context.drawImage(image,50,50);

   context.translate(150,50);

   context.scale(0.5,0.5);

   context.drawImage(image,0,0);

}

同樣的,需要配合平移和縮放,因為縮放之後,你的座標位置也會作相應的縮放。也可以使用矩陣方法來實現相應的操作。

image.onload = function(){

   context.drawImage(image,50,50);

   context.transform(0.5,0,0,0.5,150,50);

   context.drawImage(image,0,0);

}

就是14兩個引數縮放0.5.

3.旋轉

逆時針旋轉,效果如下:


程式碼如下:

context.drawImage(image,50,50);

context.transform(-Math.sin(Math.PI/4),Math.cos(Math.PI/4),Math.cos(Math.PI/4),Math.sin(Math.PI/4),150,50);

context.drawImage(image,0,0);

兩組引數分別為負的sin旋轉角,cos旋轉角,cos旋轉角,sin旋轉角。

順時針旋轉,效果如下:


程式碼如下;

context.drawImage(image,50,50);            context.transform(Math.cos(Math.PI/4),Math.sin(Math.PI/4),-Math.sin(Math.PI/4),Math.cos(Math.PI/4),150,50);

context.drawImage(image,0,0);

兩組引數分別為cos旋轉角,sin旋轉角,負的sin旋轉角,cos旋轉角。

如有錯誤,希望大家多多指正

下一篇繼續研究canvas中的畫素操作