我的問題是:位圖必須是正方形或可以刪除彩色圖像周圍的不可見部分?我在SurfaceView中有一個位圖,中間有一隻手,我想計算這隻手的邊界,刪除它周圍的不可見,因爲我有onClick方法的問題。如果不計算每個X和Y,是否可以通過Method或其他方法知道手的邊界?提前致謝。Android Studio中的位圖邊界
-1
A
回答
0
關於你的第一個問題:任何保留一定透明度的位圖都必須有一個alpha通道,所以在你的情況下一隻手有一個alpha通道,因此你不能只刪除那些alpha像素,因爲如果你做的透明部分會保持黑色。您將不得不使用ARGB_4444格式或ARGB_8888格式來保留此Alpha通道。就獲得位圖邊界而言,使用Rect或一些邊界形狀可能是橢圓形,爲了準確地知道您的手指是否在觸摸它,您不能確切地知道您的觸摸是否在此手的範圍內,因爲此手形圖,在某些部分包含不同的寬度和高度,但是您可以使用像素完美的碰撞來測試您的觸摸是否完全觸摸您的手。這是它是如何工作的:
class drawingView extends View {
Rect rect = new Rect();
Bitmap bitmap = yourHand;
@Override
public void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap, x, y, null);
rect.set(x, y, bitmap.getWidth(), bitmap.getHeight());
invalidate();
}
public void onClick() {
if(rect.contains(event.getX(), event.getY(), && bitmap.getPixel(event.getX() - rect.left, event.getY() - rect.top) != Color.TRANSPARENT) {
// you know you exactly touched the hand even out of the transparent region
}
}
我開始了你我相信你會明白這裏發生了什麼。 希望這會有所幫助:)
0
這個想法是使用正確的透明度的PNG文件,這意味着手部分應該具有透明度。
現在對於保持圖像的透明度使用BitmapFactory時,請確保您的圖片作爲ARGB_8888
1
拉到你能做的最好的事情將是搭手的圖片和裁剪降到手的大小。
通過這種方式,您將擁有更小的文件,而不必實施某種代碼工作。
相關問題
- 1. inJust Android中位圖的解碼邊界
- 2. Android Studio - 無邊界圖片資產
- 3. 從位圖中刪除透明邊界
- 4. 邊界位置
- 5. Android Studio位圖
- 6. WPF - 位圖 - 額外的邊界?
- 7. 帶邊框的Android位圖
- 8. 在邊界內翻譯/縮放位圖?
- 9. CorePlot圖中的外邊界
- 10. HTML佈局定位及圖像邊界
- 11. 調整邊界的位置
- 12. Android Studio:位圖縮放圖
- 13. Mapbox Android GL邊界
- 14. Oriented邊界框 - Android
- 15. IP標頭中的32位邊界
- 16. Android位圖刪除白邊
- 17. Android Studio中三倍大的位圖
- 18. 圖像與SimpleDraweeView邊界切割android
- 19. Android Google地圖獲得邊界座標
- 20. Android地圖視圖中的邊界框是什麼意思
- 21. 邊界半徑的Android 2.3.4
- 22. 邊界/計量單位域
- 23. 邊界定位:如何?
- 24. 定位邊界2D實體
- 25. Android Studio Google地圖位置
- 26. 谷歌地圖邊界(將位置數據限制爲緯度/長邊界)
- 27. android studio項目編譯在2.2p1奇怪的邊界
- 28. Android Studio如何創建一個沒有方形邊界的圖像?
- 29. IE9圖像邊界
- 30. 拖動邊界圖像
Wut。我認爲你需要澄清。 – Carcigenicate