2012-06-27 1 views
2

J'essaie de faire des pinceaux personnalisés pour mon application de peinture Android. J'ai commencé avec le code de Michael (found here) et j'ai réussi à obtenir des pinceaux .png et l'utiliser comme un bitmap et le redessiner. Cela fonctionne bien mais je ne peux pas changer la couleur. Essayé en utilisant le setcolorfilter et colormatrixfilter mais il ne semble pas fonctionner. Quelqu'un sait comment je peux faire ça?Couleurs personnalisées Android Brush

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(); 
    } 

Quand j'ai essayé d'utiliser la ColorMatrixFilter, la fonction .set donnait une erreur.

+0

Ici l'exemple est donné pour ColorPicker: http://about-android.blogspot.in/2010/04/create-cutomized -color-picker-in.html –

+0

Qu'est-ce qu'une erreur? Pouvons-nous voir vos tentatives d'utiliser 'ColourMatrixFilter' et' setColourFilter'? Aussi, vous ne semblez pas assigner quelque chose à 'mPanit', si vous ne le faites pas, alors vous pourriez voir' NullPointerException' – weston

+0

Sorted l'erreur, fonctionne bien maintenant, avait oublié le ColorMatrixColorFilter. J'ai un autre problème maintenant. Est-il possible que je puisse peindre mon image .png comme un "chemin" pour obtenir un effet de pinceau plus lisse. le plus vite je fais glisser mon doigt je manque de pixels – user1472707

Répondre

1

J'ai eu le même problème. Afin de changer la couleur de l'image, vous devez ajouter de la couleur à votre objet de peinture et l'appliquer en bitmap. Voir l'exemple de travail ici,

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); 
} 

Résultat,

enter image description here

Questions connexes