0

大学での課題のために、あまり知られていない言語 Modula 2 でプログラミングしますが、これには主要なグラフィック サポートがありません。

画像に「透明度」効果を実現する方法を考えていましたが、次のように機能すると考えました。

その領域のさまざまなピクセルの色で塗りつぶされた画像の背景領域の 2D 配列を作成し、すべての画像の色を使用して画像の別の 2D 配列を作成し、ピクセルの色をマージして、さまざまな「新しい色」を描画します。 」 適切な場所に。

私が疑問に思っていたこと: 色 (16 進数) をマージするにはどうすればよいですか:

( 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 に答える