Java:Android:在代码中改变画布上位图的颜色

时间:2012-12-14 13:53:24

标签: android canvas colors bitmap

我正在尝试做一些我认为很简单的事情,但显然事实并非如此!

我正在制作一个简单的应用来学习Android游戏开发。此时,用户点击屏幕并显示精灵。精灵只是一个坚实的白色方块。我想在代码中更改它。

我想我被C#/ XNA宠坏了,如果精灵是纯白色,你可以在draw方法中设置颜色。即使我使用绘画功能,这似乎也不起作用。我做了一些研究,但所有的解决方案似乎都不是我想要的,也非常复杂。如果我找不到确切的解决方案,我希望找到至少更容易弄乱的东西。这是迄今为止的相关代码:

从视图:

    private Sprite createSprite(int resouce) {
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), resouce);
    return new Sprite(this, bmp, touchX, touchY);

视图onDraw方法:

        if (touched == true)
    {
        canvas.drawColor(colors[nextColor]);
        lastColor = colors[nextColor];

        //add bitmap to array
        sprites.add(createSprite(R.drawable.test));
        //draw sprites
        for (Sprite sprite : sprites) {
            sprite.onDraw(canvas);
        }

sprite类中的相关代码:

    private Paint paint = new Paint();

public Sprite(DaphnyView daphView, Bitmap bmp, int positionX, int positionY) {
    width = bmp.getWidth();
    height = bmp.getHeight();
    DaphView = daphView;
    Bmp = bmp;
    PositionX = positionX;
    PositionY= positionY;
    paint.setColor(Color.GREEN);
}

public void onDraw(Canvas canvas) {
    canvas.drawBitmap(Bmp, PositionX, PositionY, paint);

}

如果有人能帮助我或者至少指出一个好的起点,那将是一个很大的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

我通过创建一个新的画布来修改位图,然后将这个修改后的位图传回原画布,找到了解决方案。