我想繪製一個心形的帆布在Android中使用路徑。代碼如下:Android - 用部分顏色填充路徑
@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);
}
我可以沒有任何問題提請心臟和我能夠填補用畫圖Fill
選項心臟內部的顏色。但是,我應該能夠根據一些數據動態填充心臟,並且它無法一直充滿。什麼到目前爲止,我已經實現如下:
我已經做了廣泛的搜尋和很多東西與此類似來到。其中一些包括:
我也是在畫布轉換爲位圖和填充顏色使用Flood Fill Algorithm,它可以讓用戶填寫裏面的顏色的位圖內的念來過位圖。但是,我不希望位圖在接觸心臟內部時填充顏色,但要填充按鈕單擊操作。
我認爲filling a circle gradually from bottom to top android 會給予幫助我,但它使用了一個圈,我不精通的畫布,這使得我在適應圓代碼這樣的形狀非常薄弱。
如果有人對如何實現這一點有一些想法或見解,這將是非常有幫助的。乾杯。提前致謝。
P.S:我也嘗試了一些在Paint中使用setShader
的技巧,但沒有什麼會給我想要的。
編輯:
我只是在繪製一個矩形在心臟與其他顏色相同的畫布背景的想法絆倒,這樣它看起來像它的填充一半!我仍在研究這個想法,並不確定這對我有多準確。如果有人有一個更好的主意,你是最受歡迎的。
'「但是我應該能夠根據一些數據動態填充心臟,並且它不能一直充滿。」這意味着在實踐中? – pskink
根據用戶獲得的積分,心臟需要填充10%或20%。 – San