Когда вы превращаете холст, вы на самом деле выполнения обновления на transformation matrix, так что последующие вызовы живописи будут преобразованы. В качестве примера, если вы хотите, чтобы «подушка» ваша картина, сначала перевести холст:
canvas.translate(10.0f, 0);
, а затем красят Rect на (0, 0):
canvas.drawRect(0, 0, 20, 10);
Прямоугольник будет рисовать с его началом, переведенным в (10, 0), так что вы бы назвали drawRect(10, 0)
, потому что каждая двумерная точка умножается на текущую матрицу преобразования. То же самое относится и к другим affine transformations, таким как вращение и масштабирование. Поэтому, если вы хотите перевести перевернутый текст, вам необходимо применить преобразование сначала и , затем.
Кстати, чтобы нарисовать текст на самом деле вниз, преобразование вы ищете не вращение, но своп из Y координат:
canvas.scale(1, -1);
canvas.drawText(text, 0, bm.getHeight()/2, paint);
Кроме того, убедитесь, чтобы понять разница между Canvas
и Bitmap
: первая - это класс API Android, используемый для раскрытия различных API рисования, последний представляет собой массив фактических пикселей на изображении (и, насколько я помню, до 2,3 он выделяется из родных библиотек, поэтому никогда не забудьте позвонить Bitmap.recycle()
или вы скоро получите доступное пространство d получить OutOfMemoryException
s.
http://stackoverflow.com/questions/3167928/drawing-rotated-text-on-a-html5-canvas может помочь. –
Сначала поверните холст, а затем нарисуйте текст на повернутом холсте. – Luis
@ Leco С вращением [вы все еще не получаете] (http://jsfiddle.net/4dQ9V/) перевернутый текст. См. Мой ответ ниже – Raffaele