6
votes

Comment changer la couleur d'effacement par défaut dans l'application de peinture dans Android?

Je fais une application dans laquelle je veux effacer les lignes de dessin avec l'événement. Pour cela, j'ai utilisé xxx

mais au moment de l'effacement d'une ligne, cette ligne devient noire d'abord puis effacée. Je veux une couleur transparente pour effacer un chemin de dessin.


3 commentaires

J'ai aussi extraire ce problème ... une aide du corps peut-elle aider ...?


@ user1287756 avez-vous une solution pour ce problème?


J'ai le même problème. y-a-t'il une solution?


3 Réponses :


1
votes

J'ai parcouru le doigtpaint.java de apidemos ie android-sdk \ échantillons \ android-17 \ apidemos < / code>

et modifié xxx

à xxx

maintenant il ne dessine pas de couleur noire tout en faisant effacer, tout fonctionne bien. Pas sûr qu'il est 100% de réponse appropriée mais cela fonctionne pour moi.


2 commentaires

Il est définitivement faux que vous dessinez la voie à une autre instance de toile différente


@Eyalbellisha en fait, cela fonctionne également pour moi, car vous vous dessinez sur l'objet Mcanvas de manière permanente et que temporairement à l'objet Toile de l'ONDRAW, la gomme fonctionne sur l'objet Mcanvas instantanément. Si j'essaie de dessiner la trajectoire de gomme sur l'objet Canvas ONDRAW, il n'est appliqué qu'après que je soulevais mon doigt.



-1
votes

Hey, j'ai utilisé une sorte d'astuce pour retirer la ligne noire.Dans mon bouton effaçable, j'ai défini la couleur sur blanc, au lieu d'utiliser XFermode ..

if(erase){
paintColor = Color.parseColor(newColor);
drawPaint.setColor(paintColor);
}


0 commentaires

0
votes

La ci-dessous fonctionne pour effacer sur un fond transparent ...

Call Sétérase (true) pour commencer à effacer. p>

La méthode ondraw dessinera ensuite un chemin blanc (au lieu de noir) qui Ensuite, émettez-vous à la couleur transparente et que vous gardez tout votre chemin annulez les informations. P>

Call Seterase () Pour basculer sur / OFF P>

    public void SetErase(bool On)
    {
        if (On)
        {
            if (!_erasing)
            {
                _delpaint = new Paint(_paint);
                _delpaint.Color = Color.White; 
                _paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear));
                _erasing = true;
            }
        }
        else if (_erasing)
        {
            _erasing = false;
            _paint.SetXfermode(null);
        }
    }

    protected override void OnDraw(Canvas canvas)
    {
        canvas.DrawColor(BackgroundColor);
        canvas.DrawBitmap(CanvasBitmap, 0, 0, _bitmapPaint);
        if (_erasing)
        {
            canvas.DrawPath(_path, _delpaint); // draw white path
        }
        else
        {
            canvas.DrawPath(_path, _paint);
        }
    }


0 commentaires