0

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

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

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

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

( colour1 + colour2 ) / 2 

?

谢谢你的帮助!!

4

1 回答 1

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
于 2011-01-02T15:32:46.050 回答