Android changer de toile de couleur de fond, sans perdre aucune des dessins d'elle
J'essaie de trouver un moyen de mettre en arrière-plan de toile avec une couleur repris de la coutume sélecteur de couleur sans retirer de dessins sur elle. Je suis en train de créer une application qui peut dessiner sur la toile et de l'enregistrer au format png. Mais quand j'ai mis un nouvel arrière-plan de la zone de travail, tous les dessins ont disparu. Je suis en utilisant quelque chose comme ceci :
mCanvas.drawColor(picker.getColor());
Des idées comment je peux avoir?
Vous avez besoin de nous montrer la méthode onDraw..
Salut, j'ai ajouté une solution de mise en œuvre ci-dessous. Très bien fait ce que vous voulez qu'il fasse comme indiqué dans votre question.
Salut, j'ai ajouté une solution de mise en œuvre ci-dessous. Très bien fait ce que vous voulez qu'il fasse comme indiqué dans votre question.
OriginalL'auteur Android-Droid | 2012-04-22
Vous devez vous connecter pour publier un commentaire.
Les réponses déjà données à votre question sont toutes orientées dans la bonne direction: vous avez besoin de séparer la couleur de fond du bloc et à l'avant-plan de votre dessin dans des calques séparés, puis les fusionner avant d'enregistrer le tout dans un .fichier png. C'est la manière dont Adobe Photoshop flux de travail est conçu aussi bien... C'est logique, si nous pensons à ce sujet: prendre par exemple un logiciel comme MsPaint: car il n'utilise pas de couches, il doit compter sur des trucs comme diffuseur des algorithmes à accomplir (quoique d'une manière incomplète) quelque chose de similaire à distance à un changement d'arrière-plan...
Une façon de mettre en œuvre une telle chose serait d'instancier 2 objets en Toile soutenu par 2 les différentes images. La première Toile-Bitmap paire devrait être utilisé pour votre dessin à l'avant-plan, et la seconde zone de dessin Bitmap paire devrait être utilisé pour votre fusionné-couches de dessin (c'est à dire de premier plan de dessin + fond de bloc de couleur). Puis la 2ème image Bitmap est ce qui va être enregistré pour un .fichier png lorsque vous en avez besoin pour être sauvé. De cette façon, notre première Toile-Bitmap paire de magasins de votre premier plan d'informations, ce qui n'est pas détruite si une couleur de fond doit être fait. Chaque fois qu'une opération est faite, les couches peuvent être fusionnés dans le 2ème Toile-Bitmap paire, alors qu'il y a toujours une image avec le bon contenu qui est prêt à être enregistré à votre gré.
Ici est une Vue personnalisée j'ai fait en sorte que pour effacer cette méthodologie. Il met en œuvre un simple point de vue utilisé pour dessiner une ligne bleue sur l'écran tactile à l'aide d'un doigt, avec un arrière-plan de changement de couleur en fonction de la X-Y de la position de ladite doigt, afin de démontrer une couleur d'arrière-plan de changement sans code inutile complexité inhérente de la mise en œuvre complète avec une roue de couleur/menus/notamment:
Afin de tester ce point de vue, voici un test de l'Activité qui utilise le
PaintView
classe. Ces deux fichiers sont auto-suffisantes dans un projet Android, de sorte que vous pouvez tester sur votre périphérique réel sans tracas:Hmmm. Ce que je n'ai pas obtenu de sa question. Si vous êtes correct, alors il n'y a pas de solution propre court de les sauvegarder dans un autre format, par exemple .psd... Que toute remplissage à base de solution, ou le remplacement de la couleur de la solution, est délimitée à l'échec car aucun logiciel ne peut connaître le canal alpha de semi-transparent de premier plan, des dessins, entre autres choses.
...À moins qu'il est permis d'enregistrer des calques distincts dans des images différentes, telles que l'enregistrement seulement l'avant-plan transparent (mode couleur 8888) de la couche à une .psd, et, si une information est nécessaire, soit de l'enregistrer dans une autre image, ou de sérialiser les informations sur la couleur dans un format de son choix... PSD ou équivalent serait sans doute préférable, dans ce cas, encore.
OriginalL'auteur epichorns
Lorsque vous dessinez la couleur, c'est dessiné au-dessus de vos dessins. Vous devez dessiner la couleur, et puis tirage de toute autre chose de nouveau.
Il me dit que la commande doit être draw_background->draw_image chaque fois que le changement de couleur de fond. C'est rapide donc aussi loin que l'œil va dire que le fond change.
OriginalL'auteur omers
Coup d'oeil si vous voulez changer dans la toile, alors vous devez appeler invalider d'appliquer ces modifications de votre écran.Et si vous appelez d'invalider alors votre
onDraw()
méthode appelle.Si vous souhaitez modifier uniquement la couleur d'arrière-plan de toile de sélecteur de couleur puis enregistrer la couleur de la valeur dans une variable et de l'appel d'invalider juste après l'enregistrement de la variable.Maintenant, votre
onDraw()
vais appeler.Maintenant modifier l'arrière-plan de toile en appelantsetBackgroundColor(color variable)
dansonDraw()
et dessiner tout ce que vous voulezOriginalL'auteur Tofeeq
utiliser de la toile.drawARGB(a,r,g,b)
et il va travailler pour certain
canvas.drawARGB(200, 0, 0, 0);
pour rendre la vue plus sombre.OriginalL'auteur Pranav
Tant que votre arrière-plan est et sera dans une autre couleur, vous pouvez le faire:
Ou, vous pouvez dessiner votre contenu sur un écran bitmap, et de dessiner l'arrière-plan, puis l'écran de la bitmap réelle. De cette façon, vous pouvez modifier la backgroundcolor qui sera utilisé lors de la prochaine étape de deux-dessin va se passer.
d'accord, c'est juste une solution de contournement pour les cas spéciaux, pas de solution générique!
OriginalL'auteur Bondax
@ Android Droid
Ces deux lignes de code a travaillé comme un charme pour moi. Lorsque l'utilisateur clique sur une couleur (Ex: Rouge ) jeu de couleur pour mPaint comme
et si jamais vous souhaitez changer de toile de couleur de
où dv est l'objet de la classe qui étend la vue (la Vue Personnalisée).
Essayez-le et laissez-moi savoir si vous rencontrez des problèmes.
OriginalL'auteur Deeps
Peut-être que c'est une vieille question, mais j'ai envie de contribuer à cette solution, Dans le cas où vous prenez le bitmap à partir d'une source, et ensuite de faire une dessinés avec de la toile, peut-être que cela peut s'adapter à u:
Espère que ça aide...
OriginalL'auteur JCarangoH