Использование метода -canvas.drawBitmap (bitmap, src, dst, paint) - PullRequest
21 голосов
/ 14 марта 2012

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

canvas.drawBitmap(MyBitmap, null, rectangle, null)

Я посмотрел онлайн, но не могу найти много помощи.

Ответы [ 3 ]

30 голосов
/ 14 марта 2012

РЕДАКТИРОВАТЬ


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

Согласно комментарию фритюрницы, который он рисовал под чем-то, я добавлю примечание об этом.

drawBitmap(bitmap, srcRect, destRect, paint)не обрабатывает Z ordering (depth), и порядок вызова draw для объекта имеет значение.

Если у вас есть 3 фигуры, которые нужно нарисовать, квадрат, треугольник и круг.Если вы хотите, чтобы квадрат был сверху, он должен быть нарисован последним.


Вы не указали ни одного источника, поэтому ничего не нарисовано.

Пример:

У вас есть растровое изображение 100x100 пикселей.Вы хотите нарисовать все растровое изображение.

canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null);

Вы хотите нарисовать только левую половину растрового изображения.

canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null);

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

23 голосов
/ 20 сентября 2012

Основной элемент, который следует помнить при определении Rect:

  • влево <вправо </b> и верх <низ </i>

Прямоугольник находится в экранных координатах (положительный Y вниз) ...

Я считаю полезным думать об аргументах Rect

(left, top, right, bottom)

как

(X, Y, X + Width, Y + Height)

, где X, Y - верхний левый угол изображения спрайта.

ПРИМЕЧАНИЕ. Если требуется центрировать изображение в определенном месте, не забудьте сместить эти значения на половину ширины спрайта &рост.Например:

int halfWidth = Width/2;
int halfHeight = Height/2
Rect dstRectForRender = new Rect( X - halfWidth, Y - halfHeight, X + halfWidth, Y + halfHeight );
canvas.drawBitmap ( someBitmap, null, dstRectForRender, null );

При этом используется все исходное изображение (поскольку src rect имеет значение null) и масштабируется так, чтобы соответствовать размеру и позиции из dstRectForRender ... и используя Paint по умолчанию.

1 голос
/ 04 августа 2015

Не знаю почему, но у меня это сработало!

Rect rectangle = new Rect(0,0,100,100);
canvas.drawBitmap(bitmap, null, rectangle, null);

Спасибо:)

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