私は小さな描画アプリを持っていて、「複雑な」形状をブラシ、つまり星として使用したいと考えています。シンプルなブラシでの描画は、次のコードで既に機能しています。
remotePath.reset();
remotePath.moveTo(start_x, start_y);
float dx = Math.abs(end_x - start_x);
float dy = Math.abs(end_y - start_y);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
remotePath.quadTo(start_x, start_y, (end_x + start_x) / 2, (end_y + start_y) / 2);
}
remotePath.lineTo(end_x, end_y);
// commit the path to our offscreen
mCanvas.drawPath(remotePath, remotePaint);
// kill this so we don't double draw
remotePath.reset();
invalidate();
基本的に、このビットマップを使用して同じ機能が必要です。
Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.brush_star);
私の解決策は現在、ビットマップを描画するためにポイント (座標) のリストを使用しています。このソリューションの問題は、指定されたポイントでのみビットマップを描画するため、描画された各ビットマップ間にギャップが生じることです。むしろ単純な筆のように隙間なくなめらかな線で描きたいです。
ビットマップ描画の現在のコード:
protected void onDraw(Canvas canvas) {
// Make canvas white
canvas.drawColor(Color.WHITE);
// Paintable area
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
for (Point point : points) {
canvas.drawBitmap(complexBrush, point.x, point.y, p);
}
}
そうするための最良の方法は何ですか?助けてくれてありがとう!