【问题标题】:Fill a canvas with a transparent color in Android在Android中用透明颜色填充画布
【发布时间】:2013-12-11 12:59:38
【问题描述】:

早安,

我有一个ImageView,用#99aaaaaa 颜色初始化(它对应于153,170、170,170)。之后我画了一些不同颜色的线条。现在我想用原始颜色填充我的画布(#99aaaaaa).

myCanvas.drawColor(OriginalColor) 方法用 OriginalColor 填充画布,但线条仍然可见

    myPaint.setColor(OriginalColor);
    myPaint.setStyle(Paint.Style.FILL);
    myCanvas.drawRect(0, 0, 170, 170, myPaint); // my ImageView is  170X170

同时让线条可见。

请帮忙,谢谢

【问题讨论】:

  • @Triode 我认为这与我的问题无关,我在提问之前看到了这个
  • 就我而言,我在透明 (argb , a = 153) 画布上绘图,之后我想重新初始化画布颜色。

标签: android colors imageview transparency android-canvas


【解决方案1】:

由于画布原色是半透明的,你在上面画点东西,再画一层半透明的东西,很明显你会从顶部看到降级层透明层不是吗?换句话说,如果你把半透明的玻璃放在膝盖上,你仍然可以透过它看到膝盖

【讨论】:

    【解决方案2】:

    在调用drawRec()之前设置传输模式如下:

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
    

    之后重置painter,以便进一步绘制:

    paint.setXfermode(null);
    paint.setColor(0xFFFFFFFF);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多