Как установить изображение для заполнения холста - PullRequest
2 голосов
/ 05 мая 2011

Я пытаюсь установить изображение в формате png, чтобы заполнить фон моего холста, сохраняя при этом его соотношение сторон. Я начинаю с преобразования его в растровое изображение: затем устанавливаю фон, используя метод setBitmap из класса Canvas:

http://developer.android.com/reference/android/graphics/Canvas.html#Canvas(android.graphics.Bitmap)

public class PlayOn extends View{

Bitmap board;

public PlayOn(Context gamecontext)  {
    super(gamecontext);             
    board=BitmapFactory.decodeResource(getResources(),R.drawable.board_rev1);
}

@Override
protected void onDraw(Canvas mycanvas) {

    super.onDraw(mycanvas);
    mycanvas.setBitmap(board);

}
}

Но как только я перехожу к Activity, которая вызывает этот расширенный класс View, я получаю сообщение об ошибке, которое говорит о том, что мое приложение неожиданно остановилось. Я также попытался поиграться с некоторыми другими функциями в классе Canvas и Bitmap, но, похоже, ничего не работает.

Пожалуйста, каков наилучший способ сделать это? Я читал на сайте разработчиков Android, что есть способ установить изображение таким образом, чтобы оно было холстом, и тогда другие изображения могли быть нарисованы внутри него, но я не смог понять, как это сделать.

Спасибо!

1 Ответ

2 голосов
/ 05 мая 2011

Возможно, вы захотите добавить Log.d, чтобы проверить, что растровое изображение платы вернулось из

BitmapFactory.decodeResource(getResources(),R.drawable.board_rev1); 

не равно нулю. Но я использую следующее для рисования растровых изображений в полноэкранном режиме в onDraw в нескольких приложениях, поэтому, если растровое изображение ненулевое, оно должно работать нормально.

canvas.drawBitmap(mBitmap, 0, 0, null);

И есть версия drawBitmap, которая масштабируется, а именно

void canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
Draw the specified bitmap, scaling/translating automatically to fill the 
destination rectangle.

Вы можете попробовать это?

...