设为首页 加入收藏

TOP

Android游戏编程之基本图形编程
2014-11-24 08:24:47 来源: 作者: 【 】 浏览:1
Tags:Android 游戏 编程 基本 图形

使用位图


加载和检查位图:Bitmap类我们可通过BitmapFactory单元素就可以从文件加载位图。


由于我们将图像以资源形式储存,因此我们从assets/目录加载一幅图像。


InputStream inputStream = assetManager.open("bob.png");


Bitmap bitmap = BitmapFactory.decodeStream(inputStream);


我们可以通过一下方法获取图像的像素宽度和高度:


int width = bitmap.getWidth();


int height = bitmap.getHeight();


接下来我们想知道是以什么样的颜色格式来存储位图:


Bitmap.Config config = bitmap.getConfig();


Bitmap.Config是一个枚举,其值如下:


Config.ALPHA_8 Config.ARGB_4444 Config.ARGB_8888 Config.RGB_565




我们可尝试使用BitmapFactory以一个特定的颜色格式来加载一幅图像,甚至是它的原始格式不同。


InputStream inputStream = assetManager.open("bob.png");


BitmapFactory.Options options = new BitmapFactory.Options();


options.inPreferredConfig = Bitmap.Config.ARGB_4444;


Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);


我们可以通过BitmapFactory.Options.inPreferredConfig成员来为Bitmap实例指定一个所需的颜色格式。在这里,bob.png文件是ARGB888格式的PNG图像,我们可通过BitmapFactory加载它并将其转换成ARGB444位图。




也可以使用下面的静态方法来创建一个空的Bitmap实例:


Bitmap bitmap = Bitmap.createBitmap(int width, int height, Bitmap.Config config);


Canvas类也可以操作位图:


Canvas canvas = new Canvas(bitmap);


我们通过下面办法释放任何不再需要的位图:


Bitmap.recycle();


一旦我们加载位图,就可以通过Canvas来绘制,最简单的办法如下:


canvas.drawBitmap(Bitmap bitmap, float topLeftX, float topLeftY, Paint paint);


第二和第三个参数用于指定位图位于屏幕左上角的坐标。最后一个参数可以设置为null,也可以通过Paint来指定一下高级的绘制参数。


还有一个方法:


canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint);


这个方法非常有用,它允许我们通过第二个参数绘制指定的部分为图。Rect类保存一个矩形的左上角和右下角坐标。当我们通过第二个参数src来指定部分位图时,将会在位图的坐标系统内进行绘制,如果指定为null,那么将使用整个位图。


第三个参数定义了部分为图将要绘制在什么地方,同样采用Rect实例的形式。不过这一次的角坐标将通过Canvas上的目标对象的坐标系统来给定(一个视图或者另一个视图)。无论目标矩形比源矩形大还是小,Canvas都会做出调整。最后一个参数通常设置为null。不过这个缩放代价很大,只有在绝对必要的时候使用它。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android游戏编程之SurfaceView进.. 下一篇Android游戏编程之音频编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)