2014-04-28 97 views
0

我試圖製作一個程序,允許我更改圖像的顏色,通過一個界面可以選擇一種顏色,然後單擊圖像選擇要替換的顏色在界面中選擇的那個,但問題是:更改圖像上的顏色

我需要更改transformPoint方法遞歸填充類似於所選像素的圖像像素。點擊發生的像素是參考像素,tramsformImage2中的clickedPoint,paint的顏色是paintColor。 transformPoint方法必須繪製點,如果它與參考像素的顏色類似,然後將它們的繪製點發送到北,南,北和西,則使用遞歸方法調用它本身(如果有)。

因爲每個方法調用堆棧都需要這種轉換圖像的方法,因此對於那些像素比你現有的堆棧更需要的區域是不可行的。

public void transformImage2(Point clickedPoint, Color paintColor) { 

    // desprezar o canal Alpha (transparÍncia) em todas as cores utilizadas 
    int paintColorRGB = clearAlphaChannel(paintColor.getRGB()); 

    int deltaWidth = (imageWidth - label.getWidth())/2; 
    int deltaHeight = (imageHeight - label.getHeight())/2; 

    int x = clickedPoint.x + deltaWidth; 
    int y = clickedPoint.y + deltaHeight; 

    transformPoint(x, y, getPixelColor(clickedPoint), paintColorRGB); 
} 

private int getPixelColor(Point clickedPoint) { 
    // desprezar o canal Alpha (transparÍncia) em todas as cores utilizadas 
    int pixelColor = clearAlphaChannel(image.getRGB(clickedPoint.x, 
      clickedPoint.y)); 

    return pixelColor; 
} 

private void transformPoint(int x, int y, int refColor, int paintColorRGB) { 
    // desprezar o canal Alpha (transparÍncia) em todas as cores utilizadas 
    int pixelRGB = clearAlphaChannel(image.getRGB(x, y)); 

    // TODO ... 
    image.setRGB(x, y, paintColorRGB); 
    // TODO ... 

} 

回答