0

PlayN で透明色を使用して、画像の一部を上書き/クリアしたいと考えています。これはどういうわけか可能ですか?(PlayN 1.3.1)

これが私が行ったサンプルコードです:

  @Override
  public void init() {
    // create and add background image layer
    Image bgImage = assetManager().getImage("images/bg.png");
    ImageLayer bgLayer = graphics().createImageLayer(bgImage);
    graphics().rootLayer().add(bgLayer);
    SurfaceLayer surfaceLayer = graphics().createSurfaceLayer(640, 480);
    CanvasImage image = graphics().createImage(640, 480);
    surfaceLayer.surface().setFillColor(0xff000000);
    surfaceLayer.surface().fillRect(100, 100, 200, 200);
    surfaceLayer.surface().setFillColor(0x00000000);
    surfaceLayer.surface().fillRect(150, 150, 50, 50);
    graphics().rootLayer().add(surfaceLayer);
    image.canvas().setFillColor(0xff000000);
    image.canvas().fillCircle(300, 300, 100);
    image.canvas().setFillColor(0x00000000);
    image.canvas().fillCircle(300, 300, 50);
    graphics().rootLayer().add(graphics().createImageLayer(image));
  }

だから私は試してみましたがSurfaceLayerImageLayerどれも役に立ちませんでした(この方法では部分を上書きすることはできないと思います)。2 つの交差する長方形と円が欲しかったのですが、それぞれ 1 つしか表示されません。

4

1 に答える 1

2

透明な色で描画または塗りつぶしても、何も描画されません。PlayN でピクセル データをクリアする唯一の操作は、イメージ全体をクリアする Canvas.clear() です。キャンバス ピクセル操作への GWT のアクセスを利用して、それらのピクセルを手動で設定することもできます>> https://stackoverflow.com/a/10492578/1117740

簡単な解決のために...

...長方形をクリアするには、画像のコピーを作成してから、画像をクリアして、保持したいセクションを元に戻します。

Bresenham の円描画アルゴリズムを使用して、保持したい各スキャン ラインのセグメントを元にコピーすることはできますが、円でこれを簡単に実行できないことは明らかです。

于 2012-09-01T11:24:30.670 に答える