伪透明图像

时间:2010-05-04 09:54:00

标签: image transparency modula-2

对于大学的作业,我们使用一种非常未知的语言Modula 2进行编程,该语言缺乏主要的图形支持。

我想知道如何在图像上实现“透明度”效果,我认为它会像这样工作:

为图像的背景区域创建一个2D数组,用该区域中不同像素的颜色填充,再次创建图像的另一个2D数组,然后合并像素颜色并绘制不同的颜色在他们适当的地方“新的颜色”。

我想知道的是:我如何合并颜色(十六进制):

( colour1 + colour2 ) / 2 

感谢您的帮助!!

1 个答案:

答案 0 :(得分: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
相关问题