Ich versuche, ein herzförmiges Canvas mit Pfad in Android zu zeichnen. Der Code lautet wie folgt:Android - Fill Path mit Farbe teilweise
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Fill the canvas with background color
canvas.drawColor(Color.WHITE);
// paint.setShader(null);
// Defining of the heart path starts
path.moveTo(left + WIDTH/2, top + HEIGHT/4); // Starting point
// Create a cubic Bezier cubic left path
path.cubicTo(left+WIDTH/5,top,
left+WIDTH/4,top+4*HEIGHT/5,
left+WIDTH/2, top+HEIGHT);
// This is right Bezier cubic path
path.cubicTo(left + 3 * WIDTH/4, top + 4 * HEIGHT/5,
left + 4 * WIDTH/5, top,
left + WIDTH/2, top + HEIGHT/4);
paint.setShader(new LinearGradient(0, canvas.getHeight()/4, canvas.getWidth(), canvas.getHeight()/4, new int[]{Color.RED, Color.YELLOW, Color.GREEN}, new float[]{0, 0.6f, 1}, Shader.TileMode.CLAMP));
canvas.drawPath(path, paint);
heart_outline_paint.setColor(getResources().getColor(R.color.heart_outline_color)); // Change the boundary color
heart_outline_paint.setStrokeWidth(4);
heart_outline_paint.setStyle(Paint.Style.STROKE);
canvas.drawPath(path, heart_outline_paint);
}
Ich bin in der Lage Herz ohne Frage zu ziehen, und ich bin in der Lage Farbe im Innern des Herzens mit der Fill
Option in Paint zu füllen. Aber ich sollte in der Lage sein, das Herz gemäß einiger Daten dynamisch zu füllen, und es kann nicht die ganze Zeit voll gefüllt werden. Was ich habe, ist so weit wie folgt erreicht:
ich eine umfangreiche Suche gemacht und stieß auf eine Menge Dinge ähnlich. Einige von denen:
ich auch über das Konzept kam die Leinwand zu Bitmap umzuwandeln und Füllfarbe in der Bitmap mit Flood Fill Algorithm, die Benutzer können Farben im Inneren des füllen Bitmap. Ich möchte jedoch nicht, dass die Bitmap die Farbe füllt, während sie sich im Inneren des Herzens berührt, sondern während eines Tastendrucks füllt.
Ich dachte, dass filling a circle gradually from bottom to top android würde mir helfen, geben aber es macht Gebrauch von einem Kreis, und ich bin nicht in Canvas-versiert, die mich bei der Anpassung des Kreises Code auf eine solche Form sehr schwach macht.
Wenn jemand einige Ideen oder Einsichten hat, wie dies zu erreichen ist, wird es sehr hilfreich sein. Prost. Danke im Voraus.
S.S: Ich habe auch versucht, einige Tricks mit setShader
in Paint, aber nichts würde mir geben, was ich will.
EDIT:
Ich stolperte über eine Idee, ein Rechteck über das Herz mit einer anderen Farbe gleich den Hintergrund der Leinwand zu ziehen, so dass es aussehen wird, seine Hälfte gefüllt !! Ich arbeite immer noch an der Idee und bin mir nicht sicher, wie genau das für mich sein wird. Wenn jemand eine bessere Idee hat, sind Sie herzlich willkommen.
'" Aber ich sollte in der Lage sein, das Herz dynamisch nach einigen Daten zu füllen und es kann nicht die ganze Zeit voll gefüllt werden. "' Was in der Praxis bedeutet? – pskink
Wie das Herz muss 10% oder 20% je nach den vom Benutzer erworbenen Punkten gefüllt werden. – San