2012-06-27 111 views
2

我正在尝试为自己的Android绘画应用制作自定义画笔。我开始使用迈克尔的代码(found here),并且我设法获得了.png画笔并将其用作位图并重绘它。它工作正常,但我不能改变颜色。尝试使用setcolorfiltercolormatrixfilter,但它似乎并没有工作。任何人都知道我能做到这一点?Android自定义画笔颜色

private Bitmap mBitmapBrush; 
    private Vector2 mBitmapBrushDimensions; 
    private List<Vector2> mPositions = new ArrayList<Vector2>(100); 
private Paint mPanit; 


    public MyView(Context c) { 
     super(c); 

     mPath = new Path(); 
     mBitmapPaint = new Paint(Paint.DITHER_FLAG); 
     mBitmapBrush = BitmapFactory.decodeResource(c.getResources(),R.drawable.brush1); 
     mBitmapBrushDimensions = new Vector2(mBitmapBrush.getWidth(), mBitmapBrush.getHeight()); 

    } 

@Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawColor(0xFFAAAAAA); 

     canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
     for (Vector2 pos : mPositions) { 

      canvas.drawBitmap(mBitmapBrush, pos.a, pos.b, mPanit); 

     } 



    invalidate(); 
    } 

当我尝试使用Colormatrixfilter时,.set函数发生错误。

+0

下面的例子中,给出了颜色拾取:http://about-android.blogspot.in/2010/04/create-cutomized -color-picker-in.html –

+0

什么是错误?我们可以看到你尝试使用'ColourMatrixFilter'和'setColourFilter'吗?另外你似乎没有给mPanit分配任何东西,如果你不这样做,那么你可能会看到'NullPointerException' – weston

+0

排序错误,现在工作正常,已经忘记了ColorMatrixColorFilter。我现在有另一个问题。有没有什么办法可以将我的.png图像绘制为一个“路径”以获得窒息画笔效果。我越快越快我的手指我想像素 – user1472707

回答

1

我有同样的问题。为了改变位图颜色,你需要给你的绘画对象添加颜色并将其应用到位图中。看到这里的工作示例,

for (Vector2 pos : customBrushMap.get(p)) { 
     Paint paint = new Paint(); 
     ColorFilter filter = new PorterDuffColorFilter(R.Color.GREEN, PorterDuff.Mode.SRC_IN); 
     paint.setColorFilter(filter); 
     canvas.drawBitmap(mBitmapBrush, pos.x, pos.y, paint); 
} 

结果,

enter image description here