2

所以,基本上,如果位图存在,首先绘制它,在整个视图/画布上拉伸。然后在上面画一些文本和一个矩形,它应该很好用。对?

我假设这会绘制一个“背景”(Being currentPicture),然后在它下面画一些东西,% 和矩形。

想知道为什么它的行为不是这样?它以前可以工作,但是发生了一些变化,现在没有了。

此外,该:

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

不画。

类似的故事:

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

两者都在 if 语句中。我认为不应该绘制第一个,但应该绘制第二个。位图绘制正确。

有任何问题,请追问!

代码:

@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

1
p.setColor(Color.TRANSPARENT);
canvas.drawRect(0, 0, width, height, p);

非常荒谬,尤其是当您在那之后绘制完整的背景时。

您是否尝试删除翻译/比例以查看这是否可能是问题?

哦,你为什么这样做:pictureCanvas = canvas;

于 2013-04-01T19:17:34.483 回答