我实现了我与Android的发展目标,如在这个环节Cropping circular area from bitmap in Android 但我怎么能做到这一点与libGDX框架? 我试图用Pixmap
做到这一点,但没有成功与我。libGDX:我怎样才能裁剪纹理为圆
任何人都可以帮助我实现这一目标。
我实现了我与Android的发展目标,如在这个环节Cropping circular area from bitmap in Android 但我怎么能做到这一点与libGDX框架? 我试图用Pixmap
做到这一点,但没有成功与我。libGDX:我怎样才能裁剪纹理为圆
任何人都可以帮助我实现这一目标。
我不知道是否有更简单的方法,但我提出了一个方法来处理遮罩,并将遮罩与原始像素组合到一个最终的像素图中。
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);
}
在面具pixmap上唯一看到的是alpha通道。它从掩码中对alpha进行采样,并将其与原始pixamp中的alpha相结合,然后将值写入结果pixmap。
就你而言,只要alpha是“1f”,就可以用任何颜色在面具pixmap上绘制一个实心圆。然后,结果像素图将被裁剪成圆形的原始像素图。
注意:“invertMaskAlpha”布尔允许您翻转蒙版的alpha通道。所以如果你把这个布尔值设置为“true”,你将得到你的原始像素图,并将其中的圆圈剪掉,只剩下圆圈外的边缘。
就是这样你做到了。我把它作为'Texture'绘制出来,你的方法使它返回'Pixmap'结果。谢谢A Lot :)。 – Crowni
需要更多关于你想要做什么的细节。添加静态掩码到纹理?或纹理区域/精灵?或者只是一个Pixmap?动态屏蔽屏幕上的某些元素?你是否需要能够将图像与图像分开移动并打开和关闭? – Tenfour04
@ Tenfour04 Thanx为你回答我的问题,我试图使用pixmap,因为我知道这个班可以ahcieve我的目标,但我失败了。和“着色器”可以做到,但我对此一无所知。这是我的意思,在我的问题中,我没有经验。所以,如果你能提供我的代码,我会感谢你。 – Crowni