Как я могу рисовать холст растрового изображения правильно в каждом разрешении экрана в Android - PullRequest
1 голос
/ 15 ноября 2011

Я использую canvas для отображения некоторых текстур на экране и могу отображать их на экране. Единственная проблема, с которой я сталкиваюсь, это то, что она хорошо работает в эмуляторе, но когда дело доходит до устройства, текстуры разбрасываютсяЭто связано с разницей в разрешении экрана. Можете ли вы сказать мне, как решить эту проблему

, а вот мой код для размещения текстур на экране

                   Bitmap bitmap = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.dial);
                   canvas.drawBitmap(bitmap, canvas.getWidth()/10, canvas.getHeight()/4, null);


                   Bitmap bitmap1 = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.browser);
                   //canvas.drawBitmap(bitmap1, bitmap.getWidth()/4 ,canvas.getHeight()/2, null);
                   canvas.drawBitmap(bitmap1, canvas.getWidth()/5 ,canvas.getHeight()/2, null);


                   Bitmap bitmap2 = BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.camera);
                   canvas.drawBitmap(bitmap2, canvas.getWidth()/10 + bitmap.getWidth()/6,canvas.getHeight()/3, null);

1 Ответ

2 голосов
/ 15 ноября 2011

Вам в основном нужно преобразовать свой холст, чтобы вы всегда работали с предсказуемой системой координат. Если вы не знакомы с системами координат, вы, вероятно, захотите прочитать об этом, но основная идея:

  • Определите, насколько большим должен быть ваш холст
  • Определите, насколько велик ваш экран
  • Масштабируйте холст так, чтобы его координаты совпадали с координатами экрана
  • Нарисуйте свои растровые изображения с размерами и координатами на основе вашей собственной определенной системы координат.

Пример:

Вы хотите нарисовать на холсте 640x480. Ваш экран имеет разрешение 800х400. Масштабируйте холст по (800/640) в направлении x и (480/400) в направлении y. Теперь координата 0,0 находится вверху слева, а 640,480 - внизу справа. Рисуем по необходимости.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...