2010-05-04 5 views
0

Pour une mission à l'université, nous programmons dans une langue assez inconnue Modula 2, qui manque de support graphique majeur.Pseudo Images transparentes

Je me demandais comment obtenir un effet « transparence » sur les images, je me suis dit qu'il travaillerait comme ceci:

Créer un tableau 2D pour la zone d'arrière-plan de l'image remplie avec les couleurs des différents pixels cette zone, créez un autre tableau 2D de l'image avec à nouveau les couleurs de chaque image et fusionnez les couleurs des pixels et dessinez les différentes "nouvelles couleurs" à leur emplacement approprié.

Ce que je me demandais:

(colour1 + colour2)/2 

: comment puis-je seulement fusionner les couleurs() des hexadécimaux?

Merci pour votre aide !!

Répondre

1

Non, vous ne feriez pas la moyenne des nombres. En supposant qu'ils sont stockés sous cette forme:

RRGGBB 

alors la moyenne ferait des choses étranges se produisent en raison de la contagion entre les composants de couleur. Ce que vous voulez faire est de faire la moyenne de chaque composant individuel (c'est-à-dire rouge, vert et bleu) et ensuite les combiner ensemble. En pseudocode (désolé je ne sais pas réellement 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