J'écris une application android qui dessine directement sur le canevas de l'événement onDraw d'une vue.Dessin sur le canevas
je dessine quelque chose qui implique dessiner chaque pixel individuellement, pour cela, j'utiliser quelque chose comme:
for (int x = 0; x < xMax; x++) {
for (int y = 0; y < yMax; y++){
MyColour = CalculateMyPoint(x, y);
canvas.drawPoint(x, y, MyColour);
}
}
Le problème ici est que cela prend beaucoup de temps à peindre la routine CalculateMyPoint est tout à fait un cher méthode.
Existe-t-il un moyen plus efficace de peindre sur le canevas, par exemple devrais-je dessiner sur une image bitmap puis peindre tout l'image bitmap sur le canevas de l'événement onDraw? Ou peut-être évaluer mes couleurs et remplir un tableau que la méthode onDraw peut utiliser pour peindre la toile?
Les utilisateurs de mon application pourront modifier les paramètres qui affectent le dessin sur le canevas. C'est incroyablement lent en ce moment.
Qu'est-ce qui rend le processus de CalculMyPoint si long? – Adam
J'ai un calcul raisonnablement impliqué pour calculer une couleur à utiliser pour un pixel donné. Je me demande simplement s'il est préférable de calculer la couleur pour chaque pixel d'autre où au lieu de dans l'événement onDraw de la vue. – Mattl
Avez-vous besoin de dessiner chaque pixel individuellement? Parce que c'est plus de 400k pixels sur un Droid ou un Nexus et je pense qu'il y a plus d'opportunité d'optimiser le nombre d'appels de CalculateMyPoint que dans son runtime. – jqpubliq