7

私はアンドロイドを新しくしました。私はこの画像(一致統計量)を描こうとしています enter image description hereと10%から100%の色でイメージを埋める。私はこれだけを試してみましたが、これはこれはどんな提案は私にとって非常に参考になるコードAndroidでキャンバスとビットマップを使用すると、この画像を取得する方法は?

public class DrawView extends View { 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context); 
} 

@Override 
public void onDraw(Canvas canvas) { 
    paint.setColor(Color.BLACK); 
    paint.setStrokeWidth(3); 
    canvas.drawRect(30, 30, 100, 100, paint); 
    paint.setStrokeWidth(0); 
    paint.setColor(Color.GRAY); 
    canvas.drawRect(33, 60, 97, 97, paint); 
    paint.setColor(Color.WHITE); 
    canvas.drawRect(33, 33, 97, 60, paint); 

} 

あるenter image description here

イメージです。 ありがとうございます。

+0

http://stackoverflow.com/questions/4918079/android-drawing-a-canvas-to-an-imageview –

+0

ビューをクリックした後、あなたは '無効()'関数と呼ばれていますか? –

+0

いいえ、どうすればいいですか? –

答えて

11

私は、完全に満たされていて塗りつぶされていない(ストロークのみ)2つの画像を準備します。そのように描き、その後2つのBitmapオブジェクトとしてそれらをロードして、ことある:

float fillProgress = 0.1f; // let's say image is 10% filled 

canvas.drawBitmap(onlyStroke, 0f, 0f, null); // draw just stroke first 

canvas.save(); 
canvas.clipRect(
    0f,          // left 
    getHeight() - fillProgress * getHeight(), // top 
    getWidth(),        // right 
    getHeight()        // bottom 
); 
canvas.drawBitmap(filled, 0f, 0f, null);  // region of filled image specified by clipRect will now be drawn on top of onlyStroke image 
canvas.restore(); 

を概説、2枚の画像を使用して、例えば満たし以下。

enter image description here enter image description here

上記のコードは次の操作を実行します。

  1. ドローアウトラインを。
  2. クリップ(クロップ)領域を適用します。
  3. 作物を適用して塗りつぶした形を描く。
  4. クリップを削除する、イメージは必要に応じて。別のクリップのサイズを適用する

enter image description here

、あなたが必要と塗りつぶしの%を取得することができます。例えば

enter image description here

+2

私は、2つのイメージがどのようにマージするかを示すいくつかの例が役に立つと思います。これは良い方法ですが、ビジュアルがそれをよりよく説明すると思います。 (+1) – Doomsknight

+1

@Doomsknight better? –

+0

どのように%の塗りつぶし量を示すテキストを中央に配置しますか? –

関連する問題