Android:将位图纹理添加到非矩形项目

时间:2010-10-01 10:53:00

标签: android bitmap 2d textures

我有一个看起来像这样的小部件:

alt text

每个圆锥都是“可触摸的元素”。现在我想在每个圆锥上方放置一个位图纹理。但是,位图图像都是矩形的,因此位于一个圆锥上方的位图纹理会干扰另一个圆锥上方的位图纹理。

我想知道这种方法的最佳解决方案是什么。我是否应该创建一个适合(作为矩形)正好在锥体上方并使未使用区域透明的图像?

第二个问题是,位图纹理如何与拉伸一起使用?因为整个圆圈自身适合整个屏幕尺寸,而位图纹理几乎是一个尺寸。

1 个答案:

答案 0 :(得分:2)

Offhand我想不出比你自己建议使用透明区域更好的方法来绘制比这些视锥细胞更多的位图。

但是,我可以帮助您解决第二个问题,因为拉伸位图并不难。你在Canvas类中有几个选项。例如:

canvas.save();
canvas.scale(xRatio, yRatio);
canvas.drawBitmap(....);
canvas.restore();

您还可以使用矩阵,使用matrix.postScale(xRatio, yRatio),然后生成更大的位图并正常绘制,或将矩阵传递到canvas.drawBitmap(....)命令,使其在绘制时缩放。

所有这些方法都假设您可以访问绘图画布本身。如果您正在使用视图,则可以对其进行子类化并覆盖onDraw(Canvas canvas)方法以在开始绘制之前抓取画布。如果您使用的是SurfaceHolder,那么您应该已经知道如何获取画布。


编辑:我忘记了我要描述的第三种方法。您可以使用canvas.drawBitmap(bitmap, srcRect, dstRect, paint)使画布缩放位图以适合目标矩形。简而言之,有很多方法可以做到这一点 - 根据您的应用选择最简单的方法!