如何叠加两个具有不同颜色的绘制矩形

时间:2019-03-03 21:34:35

标签: android canvas ondraw

一年多以后,我刚回到旧的onDraw代码,却完全忘记了Android画布绘制的复杂性,因此我希望这是一件容易的事。我正在绘制条形图,用于绘制矩形的代码段是:

        Paint myPaint = new Paint();
        myPaint.setStyle(Paint.Style.FILL);
        myPaint.setColor(getResources().getColor(R.color.colorGrey1));
        myPaint.setStrokeWidth(10);

        for (int pos = 0; pos < barCoordLeft.size(); pos ++) {

            c.drawRect(barCoordLeft.get(pos), barCoordTop.get(pos), barCoordRight.get(pos), barCoordBottom.get(pos), myPaint);
        }

效果很好,现在我想用一个不同颜色的较短矩形覆盖该矩形,在一个栏中显示两个度量。我以为我可以简单地通过复制并粘贴上面的代码片段并像这样编辑它来完成此操作:

        myPaint.setColor(getResources().getColor(R.color.colorGrey2));

        for (int pos = 0; pos < barCoordLeft.size(); pos ++) {

            c.drawRect(barCoordLeft.get(pos), barCoordTop.get(pos), barCoordRightSleep.get(pos), barCoordBottom.get(pos), myPaint);
        }

即更改颜色,并使用其他ArrayList作为坐标。

我仍然对onDraw的工作方式感到困惑,因此在事件流中我缺少明显的东西。

我正在拍摄这样的东西,我该如何处理呢?

overlay bar

P.S>我有一个for循环的原因是图表:

所以您认为代码应该可以工作,即在两者之间更改颜色?似乎只是用第二种颜色重新绘制了整个内容。我知道onDraw有一些问题。对此。

for loop

2.P.S> D'OH,我必须创建一个新的Paint对象,这很明显,现在可以了:

        Paint myPaint2 = new Paint();
        myPaint2.setStyle(Paint.Style.FILL);
        myPaint2.setColor(getResources().getColor(R.color.colorGrey2));
        myPaint2.setStrokeWidth(10);

        for (int pos = 0; pos < barCoordLeft.size(); pos ++) {

            c.drawRect(barCoordLeft.get(pos), barCoordTop.get(pos), barCoordRightSleep.get(pos), barCoordBottom.get(pos), myPaint2);

with 2 objects

0 个答案:

没有答案