在增长的Arc内部绘制位图

时间:2014-02-04 21:52:56

标签: java android canvas bitmap game-physics

我有1个问题和1个问题。

我希望在我的游戏中绘制一个不断扩大的弧线,到目前为止我已经设法让它逐渐扩展,但是在某个点之后弧线停止扩展并且只是消失了,为什么会这样?

这是我的弧代码:

public void render(Canvas canvas) {
    if(gameState == TESTMODE){
        drawMainBg(canvas);
        hModeRadius += 50*thread.getDelta();
        Paint p = new Paint();
        RectF rectF = new RectF(hModeY - hModeRadius, hModeX + hModeRadius, hModeX + hModeRadius,  hModeY-hModeRadius);
        p.setColor(Color.WHITE);
        canvas.drawArc (rectF, 0, 360, true, p);
    }

现在我的第二个主要问题是,有没有办法用位图填充这个弧?我想用这个弧来改变我在游戏中的背景,我希望背景能够像弧一样展开直到它填满屏幕。

1 个答案:

答案 0 :(得分:1)

您可以使用BitmapShader

// Define a method to generate a bitmap shader from a drawable resource
private static Shader getDrawableShader(Context ctx, int resId) {
    Bitmap bmp = BitmapFactory.decodeResource(ctx.getResources(), resId);
    return new BitmapShader(bmp, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
}

// Outside of onDraw(), preferably on a background thread if possible
Shader shader = getDrawableShader(getContext(), R.drawable.my_image);

// In onDraw()
paint.setShader(shader);
canvas.drawArc(rectF, 0, 360, true, paint);