2010-05-04 96 views
0

對於大學的作業,我們用一種非常未知的語言Modula 2編程,它缺少主要的圖形支持。僞透明圖像

我不知道如何實現對圖像的「透明度」的效果,我想它會像這樣工作:

創建充滿不同像素的色彩圖像的背景區域二維數組在該區域中,再次使用每張圖片的顏色創建另一個圖像二維數組,然後合併像素顏色,並在不同的「新顏色」上繪製適當的位置。

什麼我想知道:我如何合併只是顏色(十六進制):

(colour1 + colour2)/2 

感謝您的幫助!

回答

1

不,你不會平均數字。 假設它們存儲在這種形式:

RRGGBB 

然後平均會使奇怪的事情發生,因爲顏色成分之間的外溢。你想要做的是平均每個單獨的組件(即紅色,綠色和藍色),然後將它們組合在一起。在僞代碼(對不起,我實際上不知道modula-2):

for each pixel: 
    color1 := <original background color> 
    color2 := <new color> 
    resultred := (color1.redpart + color2.redpart)/2 
    resultgreen := (color1.greenpart + color2.greenpart)/2 
    resultblue := (color1.bluepart + color2.bluepart)/2 
    result := combineRGB(resultred,resultgreen,resultblue) 
    draw result onto pixel