2017-06-21 134 views
0

大家好,Java遊戲:更改圖像的亮度或透明度

我工作的一個2D遊戲瓷磚,我想光工作,所以在夜間它會更暗,晚上亮。如果我不能改變亮度,我可以讓它從明亮的質地變得更暗。這裏是我有的圖像繪製功能:

public static void drawRectTexRot(Texture tex, float x, float y, float width, float height, float angle) { 
    tex.bind(); 
    glTranslatef(x + width/2, y + height/2, 0); 
    glRotatef(angle, 0, 0, 1); 
    glTranslatef(- width/2, - height/2, 0); 
    glBegin(GL_QUADS); 
    glTexCoord2f(0,0); 
    glVertex2f(0,0); 
    glTexCoord2f(1,0); 
    glVertex2f(width,0); 
    glTexCoord2f(1,1); 
    glVertex2f(width, height); 
    glTexCoord2f(0, 1); 
    glVertex2f(0, height); 
    glEnd(); 
    glLoadIdentity(); 
} 

任何幫助將是偉大的。 :)

-Ekrcoaster

+0

我在代碼中看不到任何照明。 (除了你正在使用OpenGL的過時版本)。 – BDL

+0

有沒有更簡單的方法呢?我對opengl一無所知,並且正在使用獨立程序員繪圖方法。 – Ekrcoaster

回答

0

在java中你通過方法cange Graphics2D對象的透明度:

float opacity = 0.5f; 
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacity)); 

值0爲透明,而1是不透明的。在這種情況下,無論你畫下 將是半透明的。

要更改圖像的亮度,請使用RescaleOp。例如:

RescaleOp rescaleOp = new RescaleOp(1.3f, 0, null); 
rescaleOp.filter(image, image); 

構造函數RescaleOp的第一個參數決定亮度比例。 1f的值意味着相同的亮度,值0.75f意味着圖像更黑暗25%。 1.3f的值使圖像更亮30%。

+0

我怎麼能實現這個代碼上面? – Ekrcoaster