2

したがって、基本的に、ビットマップが存在する場合は、最初にそれを描画し、ビュー/キャンバス全体に広げます。次に、その上にテキストと長方形を描画すると、うまく機能するはずです。右?

私は、これが「背景」(Being currentPicture) を描画し、その下に % と四角形を描画すると想定していました。

なぜそのように振る舞わないのだろうか?以前は機能していましたが、何かが変わり、現在は機能していません。

さらに、

canvas.drawRect(0, 0, width, 200, p); 

描画しません。

同様の話:

canvas.drawRect(0, 100, width, 200, p); 

どちらもif文にあります。最初のものは描かれるべきではないと思いますが、2番目のものは描かれるべきです。ビットマップは正しく描画されます。

ご不明な点がございましたら、お問い合わせください。

コード:

@Override
public void onDraw(Canvas canvas) {
    int myColor = 0;
    p.setColor(Color.TRANSPARENT);
    canvas.drawRect(0, 0, width, height, p);
    if (currentPicture != null) {
        p.setColor(Color.RED);
        canvas.drawRect(0, 0, width, 200, p);
        canvas.drawBitmap(currentPicture, new Rect(0, 0, width, height), new Rect(0, 0, width, height), p);
        canvas.translate(translateX, translateY);
        canvas.scale(scaleX, scaleY);
        pictureCanvas = canvas;
        p.setColor(Color.GREEN);
        canvas.drawRect(0, 100, width, 200, p);
    }
    if (ci >= 66) {
        myColor = (Color.RED);
    } else if (ci >= 33) {
        myColor = (Color.YELLOW);
    } else {
        myColor = (Color.GREEN);
    }
    p.setColor(myColor);
    // Progress bar stuff.
    canvas.drawRect(0, height - 100, (progress * width / 20), height, p);
    // backdrop for textview.
    p.setColor(Color.BLACK);
    canvas.drawText(ci + "%", -1, height - 19, p);
    canvas.drawText(ci + "%", +1, height - 21, p);
    // Draw CI.
    p.setColor(myColor);
    p.setTextSize(100);
    canvas.drawText(ci + "%", 0, height - 20, p);
}
4

1 に答える 1