好的,我想要一個不可見的位圖,但如果你觸摸它,那麼觸摸的區域將顯示。這本身似乎並不有用,但我只想知道如何去做,所以我可以將它應用到我真正想做的事情上。那麼你如何在android中執行此操作,只繪製位圖的某些像素?安卓繪製位圖的某些像素
回答
一個很好的出發點是羅馬蓋伊的"Fun with shaders"配方,它應該讓你很接近:
因此,通過在畫布上移動形狀,您可以顯示位圖的不同部分。
的基本步驟包括:
創建阿爾法掩模(鏈接的示例使用另一個位圖用於此):
private static Bitmap convertToAlphaMask(Bitmap b) {
Bitmap a = Bitmap.createBitmap(b.getWidth(), b.getHeight(), Bitmap.Config.ALPHA_8);
Canvas c = new Canvas(a);
c.drawBitmap(b, 0.0f, 0.0f, null);
return a;
}
Bitmap mask;
mask = convertToAlphaMask(BitmapFactory.decodeResource(getResources(), R.drawable.spot_mask));
與着色創建Paint
實例來繪製面膜用:
private static Shader createShader(Bitmap b) {
return new BitmapShader(b, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
}
Shader targetShader = createShader(mTargetBitmap);
paint.setShader(targetShader);
最後,繪製掩模與所述着色器:現在
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(mMask, 0.0f, 0.0f, mPaint);
}
,在動畫的「光束」在預定的路徑(如在示例代碼)代替,它掛到觸摸事件和從那裏出發。即您可能需要跟蹤觸摸的區域和/或路徑才能獲得理想的效果。
我真的不知道着色器是如何工作的,但是..有什麼辦法可以不使用着色器? – user3843164 2014-08-31 19:11:25
而且當你實例化你放入位圖參數的畫布時,這是什麼意思?當你調用c.drawBitmap在哪裏做圖紙? – user3843164 2014-08-31 19:16:24
如何繪製一個位圖基本上工作? – user3843164 2014-08-31 21:05:45
- 1. 安卓在餅圖上繪製位圖
- 2. 安卓:利用矩陣繪製位圖
- 3. 安卓在線繪製圖像
- 4. 安卓繪製圖像性能
- 5. 安卓的繪製
- 6. 安卓繪圖
- 7. 安卓繪圖位圖質量低於原始圖像
- 8. 安卓:從繪製
- 9. 安卓:在繪製
- 10. 安卓在圖層上的繪製
- 11. 繪製位圖與不安全的每像素訪問結果爲空圖像
- 12. 安卓:位圖
- 13. 通過位圖繪製位圖並設置一些像素透明
- 14. 安卓視圖繪製性能
- 15. 如何繪製位圖,但不繪製透明像素?
- 16. 安卓在縮放後在畫布上繪製位圖
- 17. 安卓繪製位圖畫布花費時間過長
- 18. 安卓繪製球軌跡
- 19. 安卓多形可繪製
- 20. 繪製孔(安卓)路徑
- 21. 安卓:繪製分辨率
- 22. 安卓繪製矩形
- 23. 安卓繪製動畫線
- 24. 在某些像素上繪製矩形openCV
- 25. 如何避免某些安卓ROM的
- 26. 安卓TransalteAnimation位圖
- 27. 安卓:從位圖
- 28. 某些未在JPanel上繪製的圖像
- 29. 安卓繪圖程序
- 30. 安卓在動態繪圖
在自定義視圖中使用BitmapShader – pskink 2014-08-31 07:40:06