绘制位图,而不是矩形
问题描述:
对于Andriod的我有这样的代码:绘制位图,而不是矩形
public Tank(int color) {
bounds = new RectF();
paint = new Paint();
paint.setColor(color);
}
public void draw(Canvas canvas) {
bounds.set(x - radius, y - radius, x + radius, y + radius);
canvas.drawRect(bounds, paint);
}
我在哪里画一个矩形,但现在我要画一个位图,而不是一个矩形,但
bitTank = BitmapFactory.decodeRescource(getRescource(),R.drawable.ic_launcher);
或
bitTank = BitmapFactory.decodeFile("C:\Users\...\res\drawable-hdpi\ic_launcher.png");
(两者)结合
canvas.drawBitmap(bitTank, matrix, null);
不起作用。第一个不知道getRescource()
,第二个不再工作。我怎么能意识到这一点? (代码在坦克类中,另一个类调用绘图函数)。
答
第二版本根本无法工作,因为您正试图从Android应用程序访问PC上的文件。 Android不知道您的本地电脑。
使用第一个代码,您需要一个Context
的实例来访问资源。您可以通过上下文到您的构造函数,然后使用它:
class Tank {
Context context;
...
public Tank(int color, Context ctx) {
context = ctx;
bounds = new RectF();
paint = new Paint();
paint.setColor(color);
}
public void draw(Canvas canvas) {
...
bitTank = BitmapFactory.decodeRescource(context.getRescources(),R.drawable.ic_launcher);
...
}
}
虽然这不是达到你以后的唯一方法,它应该让你开始。
+0
知道这让我的问题看起来很愚蠢,谢谢:P – user1053864 2012-04-03 16:28:55
答
这是getResources()
与's'的结尾。
此外,请确保您有一个上下文来获取资源。如果您从Tank
类中做了电话,你需要访问上下文以另一种方式,无论是作为YourActivity.this
如果Tank
是一个内部类的活动,或者在构造函数中,否则它传递:
public Tank(Context ctx, int color) {
bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.ic_launcher);
//... other loading
}
感谢您的编辑,当我试图格式化它时,它不工作... – user1053864 2012-04-02 13:31:46