Aller au contenu

Paramétrage d'un Paint pour dessiner des points dans un Canvas


dmissud

Recommended Posts

Bonjour à tous,

Pour faire des essais de développement sur Android je veux faire un petit soft qui permette d'explorer l'ensemble de Mandelbrot.

Quand je dessine les points, sur l'écran de mon HTC Desire, je vois les pixels (genre ça fait un quadrillage et c'est pas beau). Comment faire pour avoir une jolie image ???

Fonction onDraw de la View

       @Override
       protected void onDraw(Canvas canvas) {
           Paint paint = mPaint;
           float[] mPts = new float[2];

           // canvas.translate(10, 10);

           canvas.drawColor(Color.BLACK);
           paint.setAntiAlias(true);
           paint.setStyle(Paint.Style.FILL_AND_STROKE);
           paint.setStrokeWidth(1);
           int h = canvas.getHeight();
           int w = canvas.getWidth();
           // paint.setColor(Color.RED);
           // paint.setStrokeWidth(0);

           // paint.setStrokeWidth(3);
           float a = -1.5f;
           float b;
           float step = 0.6f / w;
           for (int y = 0; y < h; y++) {
               b = -0.5f;
               for (int x = 0; x < w; x++) {
                   mPts[0] = x;
                   mPts[1] = y;
                   int loop = 0;
                   float z = 0.0f;
                   float xn = 0.0f;
                   float yn = 0.0f;
                   float xn1 = 0.0f;
                   float yn1 = 0.0f;
                   while ((loop < 30) && (z < 4.0f)) {
                       xn1 = xn * xn - yn * yn + a;
                       yn1 = 2 * xn * yn + b;
                       z = xn1 * xn1 + yn1 * yn1;
                       xn = xn1;
                       yn = yn1;
                       loop = loop + 1;
                   }
                   if (z < 4.0f) {
                       paint.setColor(Color.BLACK);
                       canvas.drawPoints(mPts, paint);
                   } else {
                       paint.setColor(Color.rgb(255, 15+8*loop, 0));
                       canvas.drawPoints(mPts, paint);
                   }
                   b = b + step;
               }
               a = a + step;
           }
       }
   }

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...