2010-11-07 11 views
2

J'écris une méthode qui est utilisée pour obtenir les valeurs RVB d'un carré de pixels 5x5 et ensuite calculer la couleur moyenne de chacun d'eux. On nous a donné un paquet à utiliser, et c'est de là que viennent les méthodes .getPixel.Comment obtenir les valeurs RVB d'un carré 5x5?

Ce qui me pose problème, c'est d'obtenir chaque pixel dans la zone 5x5. Ce que j'ai essayé est d'exécuter la boucle et à la fin ayant x ++ ainsi x est augmenté de un. Mais je réalise que cela n'obtient que les pixels de la rangée supérieure.

Je pense que je dois avoir une autre boucle ou une boucle imbriquée de somekind pour obtenir le carré 5x5 mais je n'arrive pas à comprendre comment le faire fonctionner tout en ajoutant les valeurs aux vars rouge, vert et bleu.

Des indices? Merci

private Color tileColor (Picture pic, int x, int y) { 

    Pixel p; 
    Color color; 
    int r,g,b; 
    int red = 0; 
    int green = 0; 
    int blue = 0; 

    for (int i = 0; i <= 5; i++){ 

    p= pic.getPixel(x,y); 
    color = p.getColor(); 

    r = color.getRed(); 
    g = color.getGreen(); 
    b = color.getBlue(); 

    red = red + r; 
    green = green + g; 
    blue = blue + b; 

    x++ 
    } 
} 

Répondre

2

En général, nous pouvons écrire:

for (int x = 0; x < 5; x++) { 
    for (int y = 0; y < 5; y++) { 
     p = pic.getPixel(x, y); 
     // do something .... 
    } 
} 

Assurez-vous que si elle est de 5 pixels, puis 0, 1, 2, 3, 4, est déjà 5 pixels.

Une autre utilisation commune est:

for (int dx = 0; dx < 5; dx++) { 
    for (int dy = 0; dy < 5; dy++) { 
     p = pic.getPixel(100 + dx, 200 + dy); 
     // do something .... 
    } 
} 

qui est d'obtenir les pixels par rapport au pixel (100, 200). dx et dy peuvent être lus comme delta x et delta y (les petits incréments).