2013-03-29 131 views
-1

嗨,我有一個項目,我需要將白色和黑色混合在一起。我有黑色的代碼工作,但我似乎無法得到白色的工作。有人可以告訴我我做錯了什麼,我早些時候做了簡單的白色工作,但它走開了,我真的不知道如何......謝謝!底部的圖片結果有鏈接!與白色混合圖片

import java.awt.Color; 
public class BlendingWithBlackAndWhite 
{ 
public static void main(String[] args) 

{ 
FileChooser.pickMediaPath(); 
BlendablePic pRef = new BlendablePic(FileChooser.pickAFile()); 
double a[]= new double[3]; 
a[0]=0.1; 
a[1]=0.3; 
a[2]=0.5; 
pRef.blendRectWithWhite(0, 920, 920, 920, a[0]+0.9); 
pRef.blendRectWithWhite(920, 920, 920, 1840, a[2]); 
pRef.blendRectWithWhite(1840, 920, 920, 2760, a[1]-0.3); 
pRef.blendRectWithBlack(0,0, 920, 920, a[1]); 
pRef.blendRectWithBlack(920,0, 1784, 920, a[0]); 
pRef.blendRectWithBlack(1785,0, 2600, 920, a[2]*-0.2); 
pRef.explore(); 
}} 

public class BlendablePic extends Picture{ 
public BlendablePic(String filename){ 
super(filename); 
} 
public void blendRectWithWhite(int xMin, int yMin, int xMax, int yMax, double a) 
    { 
int x; 
x = xMin; 
while (x<= xMax) 
{ 
    int y; 
    y = yMin; 
    while(y <= yMax) 
    { 
    Pixel refPix = this.getPixel(x,y); 
    refPix.setRed((int)Math.round(refPix.getRed() * (1.0-a)+255*a)); 
    refPix.setGreen((int)Math.round(refPix.getGreen() * (1.0-a)+200*a)); 
    refPix.setBlue((int)Math.round(refPix.getBlue() * (1.0-a)+255*a)); 
    y= y+1; 
    } 
    x = x+1; 
} 
} 
public void blendRectWithBlack(int xMin, int yMin, int xMax, int yMax, double a) 
{ 
int x; 
x = xMin; 
while (x<= xMax) 
{ 
    int y; 
    y = yMin; 
    while(y <= yMax) 
    { 
    Pixel refPix = this.getPixel(x,y); 
    refPix.setRed((int)Math.round(refPix.getRed() * (0.2 +a)+0*a)); 
    refPix.setGreen((int)Math.round(refPix.getGreen() * (0.2 +a)+0*a)); 
    refPix.setBlue((int)Math.round(refPix.getBlue() * (0.2 +a)+0*a)); 

    y = y+1; 
} 
x = x+1; 
} 
}} 

第一image是我需要做的,第二個是我從上面的編碼得到的。

+0

yoru錯誤是什麼? – smk

+0

@smk沒有錯誤,我會盡量找到鏈接到圖片的方法,堅持下去。 – neech

+0

@smk是更好的? – neech

回答

0

只要看圖片,你必須已經有混合算法,當混合成白色時,你實際上沒有做任何事情。這意味着方法應該幾乎完全相同,其中一個是「添加」顏色,另一個是「減去」顏色。當我看着你的方法,我看,這是基本上是正確的,但你改變了第二加數...

(1.0-a)+255*a 
(1.0-a)+200*a 
(1.0-a)+255*a 


(0.2 +a)+0*a 
(0.2 +a)+0*a 
(0.2 +a)+0*a 

當你乘0 *一個,你會得到0,所以你摻和正是0.2 +一個。我懷疑你的問題在這裏...

+0

我想通了!我所有的編碼都是正確的,除了我正在製作一個線條而不是一個盒子,所以我無法在我的照片上看到它! – neech