2014-02-04 3 views
0

У меня есть 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

Вы можете использовать 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); 
+1

Еще раз спасибо кс :) –

Смежные вопросы