キャンバスを使用して、複数のテクスチャを描画しました。これらのテクスチャは長方形であり、これらのテクスチャの一部を非表示にして使用したいので、テクスチャの背後に背景色を描画して、同じテクスチャを異なる色で追加することなく、異なる色で同じテクスチャを作成できます。次のように Rects を追加しようとしました。
for(Coordinate c : ch.getVisibleCoords()) {
ShapeDrawable sD = new ShapeDrawable();
Rect r = new Rect(c.getxS(),
c.getyS(),
(sh.getScreenWidth()-c.getxS()-sh.getTSize()),
(sh.getScreenHeight()-c.getyS()-sh.getTSize()));
sD.setBounds(r);
textureColorRects.add(sD);
}
各座標はテクスチャを表します xS 値と yS 値は画面上の位置です。たとえば、座標 1|1 は xS=0 | となります。yS=0 および 2|1 xS=48 (48=テクスチャサイズ) | yS=0。私はこれを ShapeDrawable と Rectangles 自体で試しました。最初のケースでは、1 つの y ラインを除いてすべて同じ色で描画され、他のケースではバグのあるたわごとが描画されます。これを行う別の方法はありますか、またはそれらの長方形をセットアップする方法を理解していなかった可能性があります。左、上、右、下がどのように機能するかわかりません。残りのコードはここにあるので、ShapeDrawables の描画方法を確認できます。
int i = 0;
for(Coordinate c : ch.getVisibleCoords()) {
ShapeDrawable sD = textureColorRects.get(i);
Paint color = new Paint();
color.setColor(c.getLandscape().getType().getColor());
color.setStyle(Paint.Style.FILL);
sD.getPaint().set(color);
sD.draw(canvas);
}
すべてのtextureColorRects
ShapeDrawables を含むリストです。
読んでいただきありがとうございます。