初めまして、少し解らないことがあるので質問させて頂きます。
VB6で簡単なペイントツールを作っていて、Adobe PhotoShopなどのソフトにあるようなエアブラシ(外側に行くにつれて薄くなる)を実現したいのですが、なかなか上手くいきません。
キャンバスの色とブラシの色をAnd演算(乗算?)すると近い所までできるのですが、やはりおかしいです。
検索をしたりしたのですが、なかなかそれらしい資料が出てきません。
解る方がおりましたら、宜しくお願い致します。
ある点(x,y)からの距離をrとし、ブラシの色をCとすると
ある点rの色cは
mを色の減衰が始まる距離、nが色の減衰が100%となる距離とすると
r<mのとき
c=C(半径m以内の色はCの色100%)
背景の色をBとすると
m<=r<nのとき
Cが100%から0%に減衰していく式は
c=C*(n-r)/(n-m)+B*(r-m)/(n-m)
r>n
半径n以上の色は100%背景色B)
c=B
ただし色の足し算は
C1(r1,g1,b1)+C2(r1,g2,b2)=C3(r1+r2,g1+g2,b1+b2)
色への掛け算は
C1(r1,g1,b1)*a=C1(r1*a,g1*a,b1*a)
とする
各色の値は0未満の場合は0に、256以上の場合は255にする
減衰が線形的で変であればいろいろ変えてみる
というような感じでいかがでしょう。
AdobePhotoShopがないので良く分からないが…
半透明ブレンドとかじゃないのか?
…誤爆の予感。
。。。さん、ガッさん ありがとうございました!
>>。。。さん
教えて下さった計算式で色々やったところ、合成できました。
円状にするのがまだ上手くいきませんが、そこはいじりつつ調整していきます。
>>ガッさん
AlphaBlendなど考えたんですが、ちょっと重かったので…。
ツイート | ![]() |