当你变换一个画布,你实际上是在transformation matrix进行更新,以便后续调用画将被改造。举个例子,如果你想“垫”你的画,你先翻译画布:
canvas.translate(10.0f, 0);
,然后上绘制一个矩形(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