「レイヤー」という単語が正しいとは思わないかもしれませんが、私は自分がしたいことを正しく理解していると思います。SurfaceViewを使用してキャンバス上にレイヤーを追加して管理する
SurfaceHolder.Callbackを実装したSurfaceViewを使用しています。
私はキャンバスに取り組んでいます。私はかなり複雑な点を描いています。 私は、翻訳されたキャンバスを持っている(移動Xと移動Yは、ユーザーがキャンバスと相互作用したときに変化する可変である)が回転し、スケール:
canvas.translate(0, 0);
canvas.rotate(-90);
canvas.translate(translateX, translateY);
canvas.scale(scaleX, scaleY);
私の次のステップは、このキャンバスの上にテキストや画像を追加することです。 テキストと画像の両方を拡大縮小したり、回転したり、翻訳したりすることはできません(キャンバスに沿って行う必要があります)。
このような理由から、キャンバスの動きにのみ追従し、ズームインまたはズームアウトや回転では変化しない「レイヤー」などの透明なものがあると考えていました。キャンバス全体にとどまる]。
ありがとうございます。
N.
EDIT:
ここでは抜粋です:
@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)
{}
}
私はお互いに近い表示されるように2つの 'HELLOOOOOO' をします。どのようにするかわかりません...
正常に機能しますか?私はキャンバスにテキストを置こうとしましたが、それは回転されました。 save()とrestore()について読んでみましょう。 :) – N3sh
私はちょうど試して、テキストが表示されません(私は問題が座標に関連していると思うが、それを解決する方法を理解することはできません):\t \t canvas.save(); \t \t \t \t \t \t canvas.rotate(90、0、0); \t \t \t \t pt.setTextSize(1000); \t \t canvas.drawText( "TEXT"、x、y、pt); \t \t \t \tキャンバス。リストア(); – N3sh
まず、図を作成するよりも、復元するよりも、テキストを描画するよりも保存する必要があります。もしそうなら、あなたは決してキャンバスに触れておらず、正しい座標上にテキストが現れるようなものでなければなりません。 – WarrenFaith