`
wgcode
  • 浏览: 599886 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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); 
		} 
	} 
} 
 
分享到:
评论

相关推荐

    ActionScript3位图九宫格缩放工具类

    帮助flash内实现图片的9宫格缩放,位图九宫格缩放,ActionScript3代码实现。

    Flex位图九宫格处理工具

    总之,Flex位图九宫格处理工具是Flex应用中一种强大的图形渲染技术,它使得位图能够以保持原始形状的方式进行缩放,这对于创建响应式用户界面非常有用。通过深入理解并合理运用`BitmapScale9Grid`和`...

    as3 九宫格

    在本文中,我们将深入探讨AS3(ActionScript 3)中的九宫格技术,这是一个用于图形布局和图像处理的重要概念。九宫格方法允许我们创建一个可伸缩的界面元素,其中图片或背景可以自由拉伸而不失真,通常用于用户界面...

    [转]位图九宫

    位图九宫格的核心原理是将一个原始图片切割成一个3x3的网格,然后只显示中间的1x1部分或者1x1及周围2x2的部分,这样可以确保即使图片被缩放,主要的视觉焦点依然保持清晰。这种方法通常适用于头像或图标,因为它们的...

    MFC位图缩放透明

    创建一个CBitmap对象,然后加载或创建位图资源,就可以进行显示、缩放和透明处理了。 透明处理的关键在于位图的alpha通道。在24位色深度的位图中,通常只有RGB三个颜色通道,而在32位色深度的位图中,增加了第四个...

    J2ME 九宫格小游戏

    九宫格游戏通常包含逻辑推理元素,可能需要玩家在限定时间内填满一个3x3的网格,遵循特定规则(如行、列和对角线数字不重复)。游戏逻辑可以由一系列条件检查和递归函数实现,确保解决方案的正确性和唯一性。 ### 7...

    位图缩放(bmp)

    对BMP位图进行缩放 BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名为BMP,故称为BMP文件...

    AS3加载外部资源(资源管理器)

    6. **九宫格拉伸位图**:在AS3中,可以使用`BitmapData`类和`draw()`方法实现九宫格拉伸,保持图片的角落不失真。首先,创建一个九宫格模板,然后根据需要调整目标尺寸。 7. **资源池队列管理**:为了提高性能和...

    Bitmap位图缩放范例

    Bitmap位图缩放是图像处理中的常见操作,广泛应用于各种应用程序和系统中,例如手机壁纸适配、游戏画面渲染、图像编辑软件等。在Android开发中,Bitmap对象是用于存储和处理像素数据的核心类,而缩放Bitmap是优化...

    位图图像文件缩放.cpp

    位图图像文件缩放.cpp

    自动处理并缩小九宫格图片类似9图

    "自动处理并缩小九宫格图片类似9图"的标题和描述指向了一种特定的图像处理技术,这种技术常用于Android应用开发,也适用于网页设计。9-patch(或称.9图)是一种图像格式,它允许开发者创建可伸缩的图片,以适应不同...

    VC实现位图的各种缩放处理功能

    3. **加载位图资源** 位图通常作为资源(如位图文件)包含在程序中。LoadImage函数可以用来从资源中加载位图,返回一个HBITMAP句柄,该句柄可以被后续的GDI函数使用。 4. **位图缩放模式** 在缩放位图之前,可能...

    flash as3 多点触控-缩放-旋转-滑动.zip

    在给定的压缩包"flash as3 多点触控-缩放-旋转-滑动.zip"中,包含了使用AS3实现多点触控功能的实例,这些功能包括触控缩放、旋转和滑动,适用于触摸屏设备。 首先,让我们深入理解多点触控的基本概念。多点触控允许...

    js+html5实现手机九宫格密码解锁功能

    通过JavaScript的函数来绘制九宫格的每个圆点,创建了九个圆形,并为每个圆形分配了一个坐标点。交互方面,当用户在Canvas上进行滑动操作时,会记录起始点和终点的坐标,绘制出一条线段连接这两个点。这一过程主要...

    C实现位图bmp的合成和缩放

    在C语言中处理位图,尤其是BMP(Bitmap File Format)这种无损图像格式,需要理解其结构并编写相应的读取、合成和缩放算法。下面将详细解释如何在C语言中实现位图的合成和缩放。 首先,让我们了解一下BMP文件格式的...

    打开位图dmp格式,带缩放功能。

    位图(Bitmap)是一种常见的图像文件格式,广泛用于各种操作系统和应用程序中。...开发人员可以通过这些组件构建一个具有位图dmp文件打开、显示以及缩放功能的应用程序,以满足用户对图像查看和操作的需求。

    九宫格2(八数码)

    标题“九宫格2(八数码)”所指的是一款基于八数码问题的游戏,通常也称为“滑动拼图”或“15拼图”。在这个游戏中,一个3x3的网格中,有8个数字(1到8)和一个空位,目标是通过最少的移动次数将数字排列成从1到8的...

    VC++缩放显示位图

    5. **执行缩放**:调用`StretchBlt()`函数进行位图的缩放,这个函数接受源和目标DC、源和目标矩形以及缩放比例参数。 6. **释放资源**:最后,记得释放创建的DC和位图资源。 在描述中提到的"Lelecode.com"可能是...

    加载位图,基于MFC对话框

    如果需要动态加载位图,或者在运行时根据需要改变位图,你可能需要对代码进行一些调整,但基本流程保持不变。在实际项目中,你还可以扩展这个功能,例如添加滚动、缩放或动画效果。希望这个教程能帮助你理解和实现...

    bmp.zip_bmp 缩放_bmp位图旋转_位图旋转_缩放 bmp

    在本案例中,我们关注的是对BMP格式的位图进行缩放和旋转的操作。BMP是一种常见的位图文件格式,它无损地存储图像数据,广泛应用于各种操作系统和应用程序中。 首先,我们要理解BMP文件的结构。BMP文件由文件头、...

Global site tag (gtag.js) - Google Analytics