0
私は描画アプリケーションを開発します。画像の特殊領域をクリアするには、消しゴムツールを実装する必要があります。消しゴムは円の一部を不均一に消去する必要があります。つまり、円の中心だけを完全に消去し、円の端をアルファで部分的に消去する必要があります。特別なビットマップ形式のキャンバス領域をクリアする
私は、ビューのいくつかの領域を消去し、その後、消しゴムの姿
をrepresentes画像を作成し、この動作を達成するために、私はこのようないくつかの絵の上に消しゴムの姿を描く:
private val picture: Bitmap
private val bgPaint = Paint()
private var eraser: Bitmap
private val eraserPaint: Paint = Paint().apply {
val mode: PorterDuff.Mode = PorterDuff.Mode.SRC_OUT
xfermode = PorterDuffXfermode(mode)
color = Color.TRANSPARENT
alpha = 0
}
init {
val options = BitmapFactory.Options()
options.inMutable = true
picture = BitmapFactory.decodeResource(resources, R.drawable.petushara, options)
eraser = BitmapFactory.decodeResource(resources, R.drawable.eraser, options)
setLayerType(View.LAYER_TYPE_SOFTWARE, bgPaint)
}
override fun draw(canvas: Canvas) {
super.draw(canvas)
canvas.drawBitmap(picture, 0f, 0f, bgPaint)
canvas.drawBitmap(eraser, 100f, 300f, eraserPaint)
}
これはコンストラクタを除いて私のビュークラス全体です。私は絵のその領域は、消しゴムの数字によって消去されます期待していますが、それはこのような四角の姿で消去:さて、私は解決策を見つけた
実は、この私ではない最善の解決策。すでに消去された領域を消去しようとすると、この領域は消去イメージの色で色づけされます。私たちの場合は黒 –