【问题标题】:How to draw with an "inverted" paint in Android Canvas?如何在 Android Canvas 中使用“倒置”绘画进行绘制?
【发布时间】:2011-05-09 20:07:49
【问题描述】:

我在画布上画了一些东西,我想用倒色画一个圆圈:

canvas.drawCircle(zx, zy, 8f, myPaint);

如何将myPaint 配置为圆形像素为底层像素的反色?

谢谢

【问题讨论】:

    标签: android canvas skia


    【解决方案1】:

    试试这个

    float mx [] = {
                 -1.0f,  0.0f,  0.0f,  1.0f,  0.0f,
                 0.0f,  -1.0f,  0.0f,  1.0f,  0.0f,
                 0.0f,  0.0f,  -1.0f,  1.0f,  0.0f,
                 1.0f,  1.0f,  1.0f,  1.0f,  0.0f 
        };
    ColorMatrix cm = new ColorMatrix(mx);
    
    p.setColorFilter(new ColorMatrixColorFilter(cm));
    
    canvas.drawCircle(zx, zy, 8f, p);
    

    【讨论】:

    • 我试过没有成功:(无论下图是什么,我都得到一个黑色圆圈。
    • 对不起,我会尝试寻找其他解决方案。
    • 没问题。似乎没有考虑背景颜色,即使使用 setColorFilter(new PorterDuffColorFilter(Color.BLACK, PorterDuff.Mode.XOR)) 或 setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR)) 之类的东西
    • 现在我得到一个静态的白色圆圈。我需要设置另一个 âraùeter 吗?谢谢
    【解决方案2】:

    我会说用于反转的颜色矩阵应该如下所示:

    float mx [] = {
             -1.0f,  0.0f,  0.0f,  0.0f,  255.0f,
             0.0f,  -1.0f,  0.0f,  0.0f,  255.0f,
             0.0f,  0.0f,  -1.0f,  0.0f,  255.0f,
             0.0f,  0.0f,  0.0f,  1.0f,  0.0f 
    };
    

    Here 是矩阵的更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-07
      • 2020-02-27
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 2013-03-22
      • 2012-01-02
      相关资源
      最近更新 更多