我不知道是否有更简单的方法,但是我提出了一种使用遮罩并将遮罩与原始像素图合并为结果像素图的方法。
public void pixmapMask(Pixmap pixmap, Pixmap mask, Pixmap result, boolean invertMaskAlpha){ int pixmapWidth = pixmap.getWidth(); int pixmapHeight = pixmap.getHeight(); Color pixelColor = new Color(); Color maskPixelColor = new Color(); Pixmap.Blending blending = Pixmap.getBlending(); Pixmap.setBlending(Blending.None); for (int x=0; x<pixmapWidth; x++){ for (int y=0; y<pixmapHeight; y++){ Color.rgba8888ToColor(pixelColor, pixmap.getPixel(x, y)); // get pixel color Color.rgba8888ToColor(maskPixelColor, mask.getPixel(x, y)); // get mask color maskPixelColor.a = (invertMaskAlpha) ? 1.0f-maskPixelColor.a : maskPixelColor.a; // IF invert mask pixelColor.a = pixelColor.a * maskPixelColor.a; // multiply pixel alpha * mask alpha result.setColor(pixelColor); result.drawPixel(x, y); } } Pixmap.setBlending(blending);}遮罩像素图上唯一看到的是Alpha通道。它从蒙版中采样alpha并将其与原始pixamp中的alpha合并,然后将值写入结果pixmap中。
在您的情况下,只要Alpha为“ 1f”,就可以用任何颜色在面具像素图上绘制一个实心圆。然后,结果像素图将是您原来的像素图,并被裁剪为一个圆。
注意: “ invertMaskAlpha”布尔值使您可以翻转蒙版的Alpha通道。因此,如果将此布尔值设置为“
true”,您将拥有原始像素图,其中的圆被切掉,仅边缘在圆外。



