这是我的代码:
Matrix matrix = new Matrix();matrix = canvas.getMatrix();mCamera = new Camera();canvas.drawText("In the name of God",30,100,redPaint);mCamera.rotateY(45);mCamera.getMatrix(matrix);matrix.preTranslate(30,100);// matrix.postTranslate(-30,-100);canvas.setMatrix(matrix);canvas.drawText("In the name of God",greenPaint);
但上面代码的结果是:
你可以看到字符串的坐标是不同的.所以我做错了什么?我猜它是由matrix.preTranslate()的不正确参数引起的.
更新:
我更改了我的代码:
canvas.drawText("In the name of God",redPaint);mCamera.rotateY(45);mCamera.getMatrix(matrix);matrix.preTranslate(-30,-100);matrix.postTranslate(30,100);canvas.setMatrix(matrix);canvas.drawText("In the name of God",greenPaint);
或者喜欢:
canvas.drawText("In the name of God",-100);//matrix.postTranslate(30,redPaint);mCamera.rotateY(45);mCamera.getMatrix(matrix);matrix.preTranslate(-30,-100);// matrix.postTranslate(30,greenPaint);
对于以上所有三个代码,结果如下所示:
我猜第二个文本是在范围之外或状态栏后面绘制的,因此它不可见.
然后将我的代码更改为:
mCamera.rotateY(45);mCamera.getMatrix(matrix);matrix.preTranslate(-30,greenPaint);
结果:
解决方法 试试这个:Matrix matrix = new Matrix();matrix = canvas.getMatrix();mCamera = new Camera();canvas.drawText("In the name of God",redPaint);mCamera.translate(30,100);mCamera.rotateY(45);mCamera.getMatrix(matrix);canvas.setMatrix(matrix);canvas.drawText("In the name of God",greenPaint);
我从不弄乱翻译前和翻译,但你可以调试它并尝试进行翻译而不是预翻译并提供(30,100)并查看是否有效.
总结以上是内存溢出为你收集整理的android – 在Canvas上绘制两个3D字符串?全部内容,希望文章能够帮你解决android – 在Canvas上绘制两个3D字符串?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)