绘制位图,而不是矩形

问题描述:

对于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(),第二个不再工作。我怎么能意识到这一点? (代码在坦克类中,另一个类调用绘图函数)。

+0

感谢您的编辑,当我试图格式化它时,它不工作... – user1053864 2012-04-02 13:31:46

第二版本根本无法工作,因为您正试图从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 

}