Mam małą aplikację do rysowania i chcę użyć "złożonych" kształtów jako pędzli, czyli gwiazdy. Rysowanie za pomocą prostego pędzla już działa z tym kodem:Jak narysować ścieżkę z bitmapą?
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();
I w zasadzie ma tę samą funkcjonalność przy użyciu tej bitmapy:
Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.brush_star);
Moje rozwiązanie jest obecnie za pomocą listy punktów (współrzędne) do rysowania bitmapa. Problem z tym rozwiązaniem polega na tym, że rysuje tylko bitmapy w danych punktach, co powoduje przerwy pomiędzy każdą narysowaną bitmapą. Raczej chciałbym uzyskać gładką linię podczas rysowania jak za pomocą prostego pędzla bez żadnych przerw pomiędzy.
Aktualny kod na rysunku bitmapy:
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);
}
}
Jaki jest najlepszy sposób, aby to zrobić? Dzięki za pomoc!
Jak rysować za pomocą wielu bitmap - tak jak zmieniamy kolor i rysujemy wiele ścieżek –