我通过 Android 开发实现了我的目标,如链接 Cropping circular area from bitmap in Android 所示。
但是如何使用 libGDX 框架实现这一目标?
我尝试用 Pixmap
做到这一点,但没有成功。
任何人都可以帮助我实现这一目标。
最佳答案
我不知道是否有更简单的方法,但我制作了一种使用蒙版并将蒙版与原始像素图组合成结果像素图的方法。
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 channel 。它对掩码中的 alpha 进行采样,并将其与原始像素放大器中的 alpha 相结合,然后将值写入结果像素图。
在您的情况下,只要 alpha 为“1f”,就可以用任何颜色在蒙版像素图上绘制一个实心圆。然后结果像素图将是裁剪成圆形的原始像素图。
注意:“invertMaskAlpha” boolean 值允许您翻转蒙版的 Alpha channel 。因此,如果您将此 boolean 值设置为“true”,您将获得原始像素图,其中圆圈被切掉,仅留下圆圈外的边缘。
关于java - libGDX:如何将纹理裁剪为圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256170/