我實現了我與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