Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-01-10 17:22:25 Probleme : carré couleur de l'image et non pixel

Alex_load
nouveau membre
Date d'inscription: 2015-11-29
Messages: 7

Probleme : carré couleur de l'image et non pixel



Bonjour,
alors je vais essayer d'être claire sur ma demande.
J'ai plusieurs images dans mon data. À l'aide des fleches du clavier et d'une forme carré je dessine une image par dessus une autre, en gros je fais apparaitre une image par dessus une autre image a l'aide de mon carré. Mais le truc c'est que l'image dessiné est pixelisée alors que je ne veux pas parce que ca fait vraiment deguellasse je voudrait que l'image soit tels quel. Voici mon code et j'ai joint mon fichier zip.


int riot = 10;
PImage [] img = new PImage[riot];
color riotCouleur;
int indexriot,dimension,vitesse,x,y,posX,posY;
float vitesseX;
float vitesseY;

void setup(){
  size(1000,1000);
  frameRate(12);
  noStroke();
  for(int i = 0; i < riot; i++){
    img[i] = loadImage("riot_" + i + ".png");
  }
  indexriot = 1;
  image(img[indexriot],0,0);
   
  vitesse = 1;
  posX = posY = 0;
}

void draw(){
  if (keyPressed) {
    if (key == CODED) {
      if (keyCode == RIGHT) {
        x=x+1;
      }
      else if (keyCode == UP) {
        y=y-1;
      }
      else if (keyCode == DOWN) {
        y=y+1;
      }
      else if (keyCode == LEFT) {
        x=x-1;
      }
    }
  }
riotCouleur = img[indexriot].get(x,y); // Récupérerla couleur du pixel sélectionné dans l'image
  fill(riotCouleur); // Le remplissage des formes se fait avec la couleur du pixel sélectionné
   if(frameCount % vitesse == 0) rect(x*50,y*50,50,50);
}

void keyPressed(){
  if(keyCode == BACKSPACE){ // SI la touche enfoncée est l'espace
    image(img[indexriot],0,0);
    posX = posY = 0;
  }
  if(keyCode == 32){ // SI la touche enfoncée est l'espace, prendre l'image suivante dans l'index d'images
    indexriot =  (indexriot < riot-1) ? indexriot = indexriot + 1 : 0;
  }

}


Etant novice j'ai du mal à remplacer se que je veux. Je voudrais en fait remplir la forme avec la couleur de l'image suivante. En esperant avoir était claire neutral

Dernière modification par Alex_load (2016-01-10 20:19:05)

Hors ligne

 

#2 2016-01-10 22:45:03 Re : Probleme : carré couleur de l'image et non pixel

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Probleme : carré couleur de l'image et non pixel



Bonsoir,

Je n'arrive pas à bien saisir ton idée. Je pense que tu souhaites dessiner une image en mémoire sur une autre avec un pinceau en forme de carré. Si c'est cela, il faut utiliser la méthode copy() comme ceci :

int riot = 2;
PImage [] img = new PImage[riot];
color riotCouleur;
int indexriot, dimension, vitesse, x, y, posX, posY;
float vitesseX;
float vitesseY;

void setup() {
  size(1000, 1000);
  frameRate(12);
  noStroke();
  for (int i = 0; i < riot; i++) {
    img[i] = loadImage("image" + i + ".jpg");
  }
  indexriot = 0;
  image(img[indexriot], 0, 0);

  vitesse = 1;
  posX = posY = 0;
}

void draw() {
  if (frameCount % vitesse == 0) copy(img[indexriot], x, y, 50, 50, x, y, 50, 50);
}

void keyPressed() {
  if (key == CODED) {
    if (keyCode == RIGHT) {
      x=x+5;
    } else if (keyCode == UP) {
      y=y-5;
    } else if (keyCode == DOWN) {
      y=y+5;
    } else if (keyCode == LEFT) {
      x=x-5;
    }
  }
  if (keyCode == BACKSPACE) { // SI la touche enfoncee est l espace
    image(img[indexriot], 0, 0);
    posX = posY = 0;
  }
  if (keyCode == 32) { // SI la touche enfoncee est l espace, prendre l image suivante dans l index d images
    indexriot =  (indexriot < riot-1) ? indexriot = indexriot + 1 : 0;
  }
}

Hors ligne

 

#3 2016-01-11 00:38:29 Re : Probleme : carré couleur de l'image et non pixel

Alex_load
nouveau membre
Date d'inscription: 2015-11-29
Messages: 7

Re: Probleme : carré couleur de l'image et non pixel



Oui smile c'est exactement ça!! Le carré dessine bien une autre image.
J'y suis depuis tellement longtemps que mon cerveau bloque à force! J'ai juste remplacé la valeur 5 par 50 dans keyPressed pour que le déplacement du carré soit le carré. Mais j'aurais une autre question est ce que c'est possible de dire que le premier carré qui dessine l'image soit d'une certaine couleur?

Hors ligne

 

#4 2016-01-11 00:53:49 Re : Probleme : carré couleur de l'image et non pixel

Alex_load
nouveau membre
Date d'inscription: 2015-11-29
Messages: 7

Re: Probleme : carré couleur de l'image et non pixel



Ou qu'il est un contour different pour qu'on le distingue en fait.

Hors ligne

 

#5 2016-01-11 01:11:56 Re : Probleme : carré couleur de l'image et non pixel

Alex_load
nouveau membre
Date d'inscription: 2015-11-29
Messages: 7

Re: Probleme : carré couleur de l'image et non pixel



Pour avoir un contour il me suffit de rajouter stroke et noFill. Mais est ce que c'est possible de le mettre qu'au premier parce la il se dessine sur tout les carrés?


int riot = 2;
PImage [] img = new PImage[riot];
color riotCouleur;
int indexriot, dimension, vitesse, x, y, posX, posY;
float vitesseX;
float vitesseY;

void setup() {
  size(1000, 1000);
  frameRate(12);
  stroke(#000000);
  noFill();
  for (int i = 0; i < riot; i++) {
    img[i] = loadImage("image" + i + ".jpg");
  }
  indexriot = 0;
  image(img[indexriot], 0, 0);

  vitesse = 1;
  posX = posY = 0;
}

void draw() {
  if (frameCount % vitesse == 0) copy(img[indexriot], x, y, 50, 50, x, y, 50, 50);
  rect(x,y,50,50);
}

void keyPressed() {
  if (key == CODED) {
    if (keyCode == RIGHT) {
      x=x+50;
    } else if (keyCode == UP) {
      y=y-50;
    } else if (keyCode == DOWN) {
      y=y+50;
    } else if (keyCode == LEFT) {
      x=x-50;
    }
  }
  if (keyCode == BACKSPACE) { // SI la touche enfoncee est l espace
    image(img[indexriot], 0, 0);
    posX = posY = 0;
  }
  if (keyCode == 32) { // SI la touche enfoncee est l espace, prendre l image suivante dans l index d images
    indexriot =  (indexriot < riot-1) ? indexriot = indexriot + 1 : 0;
  }
}

Hors ligne

 

#6 2016-01-11 10:56:24 Re : Probleme : carré couleur de l'image et non pixel

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Probleme : carré couleur de l'image et non pixel



Bonjour,

Comme tu utilises un élément mouvant, il est nécessaire de redessiner le rendu à chaque fois. L'astuce est de stocker l'indice d'images de chaque carré dans un tableau.

int nombreImages = 3;
PImage[] img = new PImage[nombreImages];
color riotCouleur;
int indexriot, dimension, vitesse, x, y, posX, posY;
float vitesseX;
float vitesseY;
int tailleCurseur, largeur, hauteur;
int[][] tableau;

void setup() {
  size(600, 600);
  frameRate(12);
  strokeWeight(4);
  stroke(#000000);
  for (int i = 0; i < nombreImages; i++) {
    img[i] = loadImage("image" + i + ".jpg");
  }
  indexriot = 0;
  tailleCurseur = 50;
  largeur = width / tailleCurseur;
  hauteur = height / tailleCurseur;
  tableau = new int[largeur][hauteur];
  for (int i = 0; i < largeur; i++) {
    for (int j = 0; j < hauteur; j++) {
      tableau[i][j] = 0;
    }
  }
  noFill();
  vitesse = 1;
  posX = posY = 0;
}

void draw() {
  background(255);
  for (int i = 0; i < largeur; i++) {
    for (int j = 0; j < hauteur; j++) {
      copy(img[tableau[i][j]], i * tailleCurseur, j * tailleCurseur, tailleCurseur, tailleCurseur, i * tailleCurseur, j * tailleCurseur, tailleCurseur, tailleCurseur);
    }
  }
  rect(x * tailleCurseur, y * tailleCurseur, tailleCurseur, tailleCurseur);
}

void keyPressed() {
  if (key == CODED) {
    if (keyCode == RIGHT) {
      if (x < largeur - 1) x++;
    } else if (keyCode == UP) {
      if (y > 0) y--;
    } else if (keyCode == DOWN) {
      if (y < hauteur - 1) y++;
    } else if (keyCode == LEFT) {
      if (x > 0) x--;
    }
  }
  if (keyCode == BACKSPACE) { // SI la touche enfoncee est l espace
    indexriot = 0;
    for (int i = 0; i < largeur; i++) {
      for (int j = 0; j < hauteur; j++) {
        tableau[i][j] = indexriot;
      }
    }
    x = y = 0;
  }
  if (keyCode == 32) { // SI la touche enfoncee est l espace, prendre l image suivante dans l index d images
    indexriot =  (indexriot < nombreImages-1) ? indexriot = indexriot + 1 : 0;
  }
  tableau[x][y] = indexriot;
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024