我想说可能(可能)“图层”这个词不是正确的,但我相信它给出了我想要做的正确的想法。
我正在使用SurfaceView,它实现了SurfaceHolder.Callback。
我在画布上工作。我正在绘制一组相当复杂的点。 我将画布翻译,旋转和缩放(translateX和translateY是变量,当用户与画布交互时会发生变化):
canvas.translate(0, 0);
canvas.rotate(-90);
canvas.translate(translateX, translateY);
canvas.scale(scaleX, scaleY);
我的下一步是在此画布上添加文本和图像。 文本和图像都不应缩放或旋转,只能翻译(它们应该跟随画布)。
出于这个原因,我正在考虑使用某种“层”或类似透明的东西,它只跟随画布的移动,并且在放大或缩小或旋转时不会改变[将它们视为某种类型的UI保留在整个画布上]。
提前致谢。
<磷>氮修改
这是一个片段:
@Override
public void onDraw(Canvas canvas) {
try{
pt.setColor(Color.BLACK);
canvas.drawColor(Color.WHITE);
canvas.drawText("HELLOOOOOOOOOOOOOOOO", 100, 10, pt);
pt.setAntiAlias(true);
canvas.save();
canvas.rotate(-90, 0, 0);
canvas.drawText("HELLOOOOOOOOOOOOOOOO", getHeight(), 10, pt);
canvas.restore();
}
catch(Exception e)
{}
}
我希望两个'HELLOOOOOO'看起来彼此靠近。我无法弄清楚如何......
答案 0 :(得分:0)
为什么不使用save()和restore(),以便在所有画布再次“正常”之后。你可以轻松地在它上画画吗?
如果您已经听说过,可以像使用SceneGraph一样保存和恢复。
答案 1 :(得分:0)
我设法解决了这个问题。我只是使用:
旋转画布rotate(+90, X, Y);
然后再旋转
rotate(-90, X, Y);
这样做,(X,Y)坐标保持不变。