读书人

AS3对外部加载的位图进展九宫格缩放

发布时间: 2012-10-25 10:58:57 作者: rapoo

AS3对外部加载的位图进行九宫格缩放

package { import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; import flash.events.Event; import flash.display.Loader; import flash.display.BitmapData; import flash.display.Bitmap; import flash.display.Sprite;  /** * @author jh7086 */  [SWF (width="1000", height="800", backgroundColor="0xffffff")]  public class BitmapTest extends Sprite { private var bitmap : Bitmap; private var loader : Loader; private var source : BitmapData;  private var tile : Sprite; private var bound : Rectangle;private var grid9 : Rectangle; private var tbound : Rectangle;private var tgrid9 : Rectangle; public function BitmapTest() { JH.print("Start>>>>>>>>>>"); bitmap = new Bitmap(); addChild(bitmap); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, loader_complete); loader.load(new URLRequest("dlgFinger.png")); addChild(loader); bound = new Rectangle(0, 0, 200, 100);grid9 = new Rectangle();grid9.left = bound.left+15;grid9.top = bound.top+40;grid9.right = bound.right-15;grid9.bottom = bound.bottom-20;tbound = new Rectangle(0, 0, 500, 500);tgrid9 = new Rectangle();tgrid9.left=tbound.left + (grid9.left - bound.left);tgrid9.top=tbound.top + (grid9.top-bound.left);tgrid9.right=tbound.right - (bound.right - grid9.right);tgrid9.bottom=tbound.bottom - (bound.bottom - grid9.bottom);tile = new Sprite;tile.graphics.beginFill(0xff0000, 0.2);tile.graphics.drawRect(grid9.x, grid9.y, grid9.width, grid9.height);//tile.graphics.beginFill(0x00ff00, 0.2);//tile.graphics.drawRect(tgrid9.x, tgrid9.y+100, tgrid9.width, tgrid9.height);addChild(tile);} private function loader_complete(event : Event) : void { var x : int;var y : int;var w : int;var h : int;var k:int;var d:int;var i:int;var bd : BitmapData;source = Bitmap(loader.content).bitmapData;bd = new BitmapData(tbound.width, tbound.height, true, 0x66ff0000); //左上,原图x = bound.left;y = bound.top;w = grid9.left - bound.left;h = grid9.top - bound.top;bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tbound.left, tbound.top));//左,垂直拉伸 k = tgrid9.height / grid9.height;d = tgrid9.height % grid9.height;x = bound.left;y = grid9.top;w = grid9.left - bound.left;h = grid9.height;for(i=0;i<k;i++){bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tbound.left,tgrid9.top + i * h));}bd.copyPixels(source, new Rectangle(x, y, w, d), new Point(tbound.left, tgrid9.top + i * h));//左下,原图x = bound.left;y = grid9.bottom;w = grid9.left - bound.left;h = bound.bottom - grid9.bottom;bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tbound.left, tgrid9.bottom));//下,水平拉伸k = tgrid9.width / grid9.width;d = tgrid9.width % grid9.width;x = grid9.left;y = grid9.bottom;w = grid9.width;h = bound.bottom - grid9.bottom;for(i=0;i<k;i++){bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tgrid9.left + i * w, tgrid9.bottom));}bd.copyPixels(source, new Rectangle(x, y, d, h), new Point(tgrid9.left + i * w, tgrid9.bottom));//右下,原图x = grid9.right;y = grid9.bottom;w = bound.right - grid9.right;h = bound.bottom - grid9.bottom;bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tgrid9.right, tgrid9.bottom));//右,垂直拉伸k = tgrid9.height / grid9.height;d = tgrid9.height % grid9.height;x = grid9.right;y = grid9.top;w = bound.right-grid9.right;h = grid9.height;for(i=0;i<k;i++){bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tgrid9.right, tgrid9.top + i * h));}bd.copyPixels(source, new Rectangle(x, y, w, d), new Point(tgrid9.right, tgrid9.top + i * h));//右上,原图x = grid9.right;y = bound.top;w = bound.right - grid9.right;h = grid9.top - bound.top;bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tgrid9.right, tbound.top));//上,水平拉伸k = tgrid9.width / grid9.width;d = tgrid9.width % grid9.width;x = grid9.left;y = bound.top;w = grid9.width;h = grid9.top - bound.top;for(i=0;i<k;i++){bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tgrid9.left+i*w, tbound.top));}bd.copyPixels(source, new Rectangle(x, y, d, h), new Point(tgrid9.left+i*w, tbound.top));//中间,垂直拉伸,水平拉伸k = tgrid9.width / grid9.width;d = tgrid9.width % grid9.width;x = grid9.left;y = grid9.top;w = grid9.width;h = Math.min(grid9.height,tgrid9.height);for(i=0;i<k;i++){bd.copyPixels(source, new Rectangle(x, y, w, h), new Point(tgrid9.left + i * w, tgrid9.top));}bd.copyPixels(source, new Rectangle(x, y, d, h), new Point(tgrid9.left + i * w, tgrid9.top));k = tgrid9.height / grid9.height;d = tgrid9.height % grid9.height;x = tgrid9.left;y = tgrid9.top;w = tgrid9.width;h = grid9.height;for(i=1;i<k;i++){bd.copyPixels(bd, new Rectangle(x, y, w, h), new Point(tgrid9.left, tgrid9.top + i * h));}bd.copyPixels(bd, new Rectangle(x, y, w, d), new Point(tgrid9.left, tgrid9.top + i * h));//bitmap.bitmapData=bd;bitmap.y = source.height + 1; JH.print(source.width, source.height);JH.print(bitmap.width, bitmap.height); } } } 
?

读书人网 >编程

热点推荐