对于大学的作业,我们使用一种非常陌生的语言 Modula 2 进行编程,该语言缺乏主要的图形支持。
我想知道如何在图像上实现“透明”效果,我想它会像这样工作:
为图像的背景区域创建一个二维数组,填充该区域中不同像素的颜色,再次使用每张图片的颜色创建另一个图像的二维数组,然后合并像素颜色并绘制不同的“新颜色” “在他们适当的地方。
我想知道的是:我如何合并颜色(十六进制):
( colour1 + colour2 ) / 2
?
谢谢你的帮助!!
对于大学的作业,我们使用一种非常陌生的语言 Modula 2 进行编程,该语言缺乏主要的图形支持。
我想知道如何在图像上实现“透明”效果,我想它会像这样工作:
为图像的背景区域创建一个二维数组,填充该区域中不同像素的颜色,再次使用每张图片的颜色创建另一个图像的二维数组,然后合并像素颜色并绘制不同的“新颜色” “在他们适当的地方。
我想知道的是:我如何合并颜色(十六进制):
( colour1 + colour2 ) / 2
?
谢谢你的帮助!!
不,你不会平均这些数字。假设它们以这种形式存储:
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