像素贴紧和平滑
Bitmap 类的 pixelSnapping 属性可确定 Bitmap 对象是否贴紧最近的像素 。此属性接受 PixelSnapping 类中定义的三个常量之一:ALWAYS 、AUTO 和 NEVER 。
myBitmap.pixelSnapping = PixelSnapping.ALWAYS;
通常,缩放位图图像时,图像会变得模糊或扭曲。若要帮助减少这种扭曲,请使用 BitmapData 类的 smoothing 属性。如果将该布尔值属性设置为 true ,当缩放图像时,可使图像中的像素平滑 或消除锯齿 。它可使图像更加清晰、更加自然。
了解 BitmapData 类
BitmapData 类位于 flash.display 包中,它可以看作是加载的或动态创建的位图图像中包含的像素的照片快照。此快照用对象中的像素数据 的数组表示 。
var myBitmap:BitmapData = new BitmapData(width:Number, height:Number, transparent:Boolean, fillColor:uinit);
transparent 参数指定位图数据是 (true) 否 (false) 包括Alpha 通道 。fillColor 参数是一个 32 位颜色值,它指定背景颜色和透明度值 (如果设置为 true)。
var myBitmap:BitmapData = new BitmapData(150, 150, true, 0x80FF3300);
处理单个像素
getPixel() 方法:从作为参数传递的一组 x, y (像素)坐标中检索 RGB 值。相对应的是setPixel() 。
getPixel32() 方法:返回的值包含表示所选像素的 Alpha 通道(透明度)值的附加数据 。相对应的是setPixel32() 。
var red:uint = 0xFF0000;
myBitmapData.setPixel(50, 50, red);
var pixelValue:uint = myBitmapData.getPixel(50, 50);
trace(pixelValue.toString(16));
getPixels() 方法:从作为参数传递的矩形像素数据区域 中生成字节数组 。字节数组的每个元素(即像素值)都是无符号的整数(32 位未经相乘的像素值)。相对应的是setPixels() 。
var bitmapDataObject1:BitmapData = new BitmapData(100, 100, false, 0x006666FF);
var bitmapDataObject2:BitmapData = new BitmapData(100, 100, false, 0x00FF0000);
var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bitmapDataObject1.getPixels(rect);
bytes.position = 0;
bitmapDataObject2.setPixels(rect, bytes);
复制位图数据
- clone ():允许您将位图数据从一个 BitmapData 对象克隆或采样 到另一个对象。
- copyPixels ():将像素从一个 BitmapData 对象复制到另一个 BitmapData 对象的快速且简便的方法。该方法会拍摄源图像的矩形快照 (由 sourceRect 参数定义),并将其复制到另一个矩形区域 (大小相等)。
- copyChannel ():法从源 BitmapData 对象中采集预定义的颜色通道值 (Alpha、红、绿或蓝),并将此值复制到目标BitmapData 对象的通道中。调用此方法不会影响目标 BitmapData 对象中的其它通道 。
- draw ():将源 sprite 、影片剪辑 或其它显示对象中的图形内容绘制或呈现在新位图上 。使用 Flash Player 和 AIR 中的矢量渲染器生成数据 。
滚动位图
scroll () 方法可以复制屏幕上的位图,然后将它粘贴到由 (x, y) 参数指定的新偏移位置 。
var myBitmapDataObject:BitmapData = new BitmapData(1000, 1000, false, 0x00FF0000);
myBitmapDataObject.scroll(1, 1);
利用 mipmap 处理
“MIP map” (也称为“mipmap”)是组合在一起并与纹理关联 的位图 ,可改善运行时呈现品质和性能。
- MIP map 不适用于应用滤镜 的对象 或缓存位图 的影片剪辑 。
- Flash Player 和 AIR 的 mipmap 处理是自动执行 的。
- 对于视频播放,请将 Video 对象的 smoothing 属性设置为 true 。
- 对于位图,不一定 要将 smoothing 属性设置为 true,但当位图使用平滑处理时品质的改善更为显著 。
- 对于二维 图像,请使用可被 4 或 8 整除 的位图大小。
- 对于三维 纹理,请使用 2^n 的位图大小。
- 当 Flash Player 或 AIR 遇到宽或高为奇数 的位图时,会停止 Mipmap 处理。