У меня есть небольшое приложение для рисования, и я хочу использовать «сложные» фигуры в качестве кистей, то есть звездочку.
Рисование с помощью простой кисти уже работает с этим кодом:
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);
}
}
Какой лучший способ сделать это?
Спасибо за любую помощь!