天天看點

BitmapData動态效果

[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