Image 播放:图像的清晰部分

Image 播放:图像的清晰部分,image,playn,Image,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().createImageLaye

我想覆盖/清除图像的一部分,使用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));
  }

因此,我尝试了
SurfaceLayer
,也尝试了
ImageLayer
,它们都没有帮助(我想这样不可能覆盖零件)。我想有两个相交的矩形和圆形,但我只看到其中一个。

绘制或填充透明颜色只会导致什么都没有绘制。在PlayN中清除像素数据的唯一操作是Canvas.clear(),它清除整个图像。您还可以利用GWT对画布像素操作的访问,手动设置这些像素>>

为了一个简单的解决方案

。。。要清除矩形,您只需复制图像,然后清除图像并缩回希望保留的部分


显然,你不能如此轻松地使用圆,尽管你可以使用Bresenham的圆绘制算法并复制回你希望保留的每条扫描线的线段。

谢谢,这是一种方法,但我担心这对Android上的GC问题没有帮助。(使事物再次透明不需要重新创建整个层/图像并进行处理。)