[英]Draw Bitmap instead of Rect
对于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);
}
我在这里绘制一个Rect,但是现在我想绘制一个Bitmap而不是Rect,但是
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()
,而第二个则不起作用。 我怎么能知道呢? (该代码位于Tank类中,另一个类称为draw函数)。
第二个版本根本无法工作,因为您正试图从内部Android应用程序访问PC上的文件。 Android对您的本地PC一无所知。
在第一个代码中,您需要一个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);
...
}
}
虽然这不是实现目标的唯一途径,但它应该可以帮助您入门。
它是getResources()
,末尾带有“ s”。
还要确保您有一个上下文来获取资源。 如果您从Tank
类中进行调用,则需要以其他方式访问上下文,例如YourActivity.this
如果Tank
是一个内部类,则为活动,否则将其传递给构造函数:
public Tank(Context ctx, int color) {
bitmap = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.ic_launcher);
//... other loading
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.