[1b]一、計算機中顯示的圖形一般可以分為兩大類——矢量圖和位圖。[/1b]
[1b]矢量圖(vector):[/1b]使用直線和曲線來描述圖形,這些圖形的元素是一些點、線、矩形、多邊形、圓和弧線等等,它們都是通過數學公式計算獲得的。衆所周知Flash就是一款矢量動畫制作軟體。在AS中使用的填色(beginFill),畫線(lineTo)等指令都是基于對矢量圖的操作。
[1b]位圖(Bitmap):[/1b]一般是用于照片品質的圖像處理,是由許多像小方塊一樣的像素組成的圖形。簡單地說,位圖就是以無數的色彩點組成的圖案。位圖(Bitmap)也就是我們今天要介紹的。
[1b]
兩者比較:[/1b]
1、矢量圖可以無限放大,而且不會失真; 而位圖會失真。
2、位圖由像素組成而矢量圖由矢量線組成。
3、位圖可以表現的色彩比較多;而矢量圖則相對較少。
4、矢量圖體積小,但比較消耗計算資源;位圖則比較消耗記憶體資源,但對計算資源消耗小。
[1b]二、BitmapData類的概念
[/1b]BitmapData類可用于在文檔中建立可任意調整大小的透明或不透明位圖圖像,并且可以在運作時以各種方式對它們進行處理。可以把BitmapData對象看成一個特殊的數組,專門用來存儲位圖的像素點陣資訊。如果一個位圖大小是100*100,那麼BitmapData中就好比一個存儲在一個100*100的二維數組,對應存儲這10000像素的顔色值。
[1b]三、BitmapData類的使用
[/1b]import flash.display.BitmapData;
//導入BitmapData類
var bm = new BitmapData(width,height,transparent,fillcolor);
//執行個體化
[1b]四、BitmapData構造函數
[/1b]public BitmapData(width, height, [transparent], [fillColor])
width(寬):位圖資料的寬度(像素);
height(高): 位圖資料的高度(像素);
[transparent(透明度)]: 是否支援每個像素具有不同的透明度;
[fillcolor(添充色)]: 用于填充位圖圖像區域。預設為0xFFFFFFFF(白色)
*[中括号]表示可選參數
例如(建立一個100*100的位圖資料):
import flash.display.BitmapData;
var bm:BitmapData = new BitmapData(100,100,false,0xffff00)
[1b]五、BitmapData.draw()方法
[/1b]Draw()方法簡單地了解為:複制像素到BitmapData對象中。
例如:在主場景有一個影片剪輯,執行個體名為"pic"
import flash.display.BitmapData;
var bm:BitmapData = new BitmapData(100, 100);
bm.draw(pic);
//bm複制pic的像素
_root.createEmptyMovieClip("mc", 10);
mc._x = mc._y=150;
mc.attachBitmap(bm, 1);
//用mc加載位圖資料bm,深度為1。
*注意:位圖在影片剪輯(pic)中的位置。
[img]/uploads/allimg/080328/1701370.jpg[/img]
在使用draw()方法複制像素時,永遠是從mc的(0,0)點開始取。是以小于(0,0)位置的像素都不會被取到。
[img]/uploads/allimg/080328/1701371.jpg[/img]
[url=http://blog.sina.com.cn/main/html/showpic.html#url=http://album.sina.com.cn/pic/3ecb9b1143fbe499c579c][/url]
應正确放置位圖在影片剪輯中的位置(注冊點在左上(0,0))
[1b]六、Rectangle 類[/1b]
是以介紹Rectangle 類是因為它常與BitmapData類配合使用。
1、作用:在BitmapData類中用于定義位圖圖像大小和位置的矩形。
2、Rectangle 類的使用
import flash.geom.Rectangle;
public Rectangle(x, y, width, height)
x - 矩形左上角的 x 坐标。
y - 矩形左上角的 y 坐标。
width - 矩形的寬度,以像素為機關。
height - 矩形的高度,以像素為機關。
例如(一個100*100的矩形):
import flash.geom.Rectangle;
myRect = new Rectangle(0,0,100,100);
好啦,說了這麼多理論知識,都是為我們的執行個體做鋪墊的,下面就開始動手操作吧!
[1b]執行個體1:放大鏡效果[/1b][BitmapData. copyPixels()]
本文轉自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/1028.html