0

キャンバスを使用して、複数のテクスチャを描画しました。これらのテクスチャは長方形であり、これらのテクスチャの一部を非表示にして使用したいので、テクスチャの背後に背景色を描画して、同じテクスチャを異なる色で追加することなく、異なる色で同じテクスチャを作成できます。次のように 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);
}

すべてのtextureColorRectsShapeDrawables を含むリストです。

読んでいただきありがとうございます。

4

1 に答える 1

0

私は解決策を見つけました。それは他の人も抱えていた問題です (見つけるのが難しかっただけです)Rect左、上、右、下の値がどのように機能するかを理解するのは少し難しいです。サイズが 16*16 の長方形で、画面上の点 x=5|y=18 にあるため、正しい値を x+size (5+16) に、下を y+size (18+) に設定する必要があります。 16)。lft と top は、rect の左上端 (開始位置) に設定できます。

于 2013-05-05T12:45:14.570 に答える