自定义笔触android:自定义形状周围的黑色边框

时间:2014-02-09 14:44:55

标签: android

我正在尝试制作自定义画笔。当我触摸并移动手指时,我拍了一张图像并尝试在画布上绘制它。我有一个只有白色的星形png图像。我计划根据用户的颜色选择更改颜色。要改变颜色,我使用的颜色矩阵如下:

    float[] colorTransform = { //For red color as of now
            1f,0 , 0, 0,0, 
            0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 
            0, 0, 0, 1, 0};

    ColorMatrix colorMatrix = new ColorMatrix();
   // colorMatrix.setSaturation(0f); //Remove Colour 
    colorMatrix.set(colorTransform); //Apply the Red

    ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
    Paint paint = new Paint();
    paint.setColorFilter(colorFilter);
    paint.setAntiAlias(true);

    for (Point pos: positions)
    canvas.drawBitmap(mBitmapBrush, pos.x, pos.y, paint);

一切似乎都能解决一个问题: “在绘制Bitmap时,我的星形周围会出现一个黑色的薄边框”。我用错误的方式使用colormatrix吗?有什么建议?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果要使用颜色矩阵替换位图的原始颜色,请更改最右侧的列。

float[] colorTransform = { 
        0, 0, 0, 0, 255, // Set red component of each output pixel to max
        0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 
        0, 0, 0, 1, 0};  // Copy over the alpha channel from the input

最后一列是偏移词。无论输入如何,它都会添加到结果中。在上面的例子中,255被添加到红色通道。

请注意,左上角的3x4子矩阵为空。这实际上丢弃了输入图像中的所有颜色信息。第5列再次添加颜色:用户选择的颜色。