SDXFrameWork  0.07
SDXFrameWork
 全て クラス ネームスペース 関数 変数 列挙型 列挙型の値 ページ
Public メソッド | すべてのメンバ一覧
クラス SDX::Blend

Image同士の合成処理を行う関数群[DXLIB]. [詳細]

#include <Blend.h>

Public メソッド

bool Add (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 加算合成. [詳細]
 
bool Burn (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 焼き込み合成. [詳細]
 
bool Darken (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 比較合成(暗). [詳細]
 
bool Difference (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 減算合成. [詳細]
 
bool Dodge (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 覆い焼き合成. [詳細]
 
bool Exclusion (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 除外合成. [詳細]
 
bool HardLight (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 ハードライト合成. [詳細]
 
bool Lighten (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 比較合成(明). [詳細]
 
bool Multiple (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 乗算合成. [詳細]
 
bool Normal (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 通常合成. [詳細]
 
bool OverLay (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 オーバーレイ合成. [詳細]
 
bool RgbaSelectMix (Image *合成イメージ, const Image *入力イメージ, RGBA 赤要素, RGBA 緑要素, RGBA 青要素, RGBA 透明要素, double 合成率=1.0)
 RGBAの要素を選択して合成. [詳細]
 
bool Screen (Image *合成イメージ, const Image *入力イメージ, double 合成率=1.0)
 スクリーン合成. [詳細]
 
bool SoftLight (Image *合成イメージ, const Image *入力イメージ, double 合成率)
 ソフトライト合成. [詳細]
 

説明

Image同士の合成処理を行う関数群[DXLIB].

合成元のイメージに入力イメージを合成し、画像編集ソフトにあるような合成処理を施す。
合成率は0.0~1.0の範囲で指定し、率が高い程入力の影響が強くなる。

//色んな画像を合成してみる
bool SampleBlend()
{
//サンプルコード作成途中です。
using namespace SDX;
System::Initialise("sample", 600, 400);
Image imageA("image.bmp");
Image imageB("image.bmp");
Image imageC = BlendBlt::Add(&imageA, &imageB, 128);
while (System::Update())
{
imageA.Draw(10, 10);
imageB.Draw(10, 200);
imageC.Draw(200, 10);
if (Input::key.Return.on) break;//Enterで終了
}
return true;
}

関数

bool SDX::Blend::Add ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

加算合成.

合成イメージに入力イメージの色を足す。

bool SDX::Blend::Burn ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

焼き込み合成.

合成して暗くする。
[計算方法]
合成後の色 = 1.0 - ( 1.0 - 合成元の色 ) / 入力の色
※入力の色が0.0の時、合成後の色は0.0

bool SDX::Blend::Darken ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

比較合成(暗).

合成と入力の暗い方を合成後の色にする。

bool SDX::Blend::Difference ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

減算合成.

合成イメージから、入力イメージを減算する。

bool SDX::Blend::Dodge ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

覆い焼き合成.

合成後、明るくする。
[計算方法]
合成後の色 = 合成元の色 / (1.0 - 入力の色)
※入力の色が1.0の場合、合成後の色は1.0

bool SDX::Blend::Exclusion ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

除外合成.

合成後、暗くする。
[計算方法]
合成後 = 合成元 + 入力 - 2.0 * 合成元 * 入力

bool SDX::Blend::HardLight ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

ハードライト合成.

オーバーレイ合成の条件を、合成元から入力に変更して計算。

bool SDX::Blend::Lighten ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

比較合成(明).

合成と入力の明るい方を合成後の色にする。

bool SDX::Blend::Multiple ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

乗算合成.

二つのイメージの色を乗算する。
各成分は0.0~1.0の値に見立てて乗算を行うので、
元の色より暗くなる事はあっても明るくなることはない。

bool SDX::Blend::Normal ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

通常合成.

特殊な効果を付けずに合成
合成率が1に近いほど、入力画像の不透明度が高くなる。

bool SDX::Blend::OverLay ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

オーバーレイ合成.

合成イメージの色が0.5以下の部分は暗く、それ以外は明るくする合成。
[計算方法]
GrHandleの色が0.5以下:
合成後の色 = 合成元の色 * 入力の色 * 2.0
それ以外:
合成後の色 = 2.0 * ( 合成元の色 + 入力の色 - 合成元の色 * 入力の色 ) - 1.0

bool SDX::Blend::RgbaSelectMix ( Image 合成イメージ,
const Image 入力イメージ,
RGBA  赤要素,
RGBA  緑要素,
RGBA  青要素,
RGBA  透明要素,
double  合成率 = 1.0 
)

RGBAの要素を選択して合成.

合成後の画像として赤・緑・青・アルファの各成分を 合成元、入力のどちらのどの要素から取るかを指定する。
例えば、赤要素 に RGBA::BlendR を指定した場合は、合成後の画像の赤成分は、入力イメージの緑成分になる。

bool SDX::Blend::Screen ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 = 1.0 
)

スクリーン合成.

加算合成のように明るくする。
[計算方法]
合成後の色 = 1.0f - ( ( 1.0f - 合成イメージの色 ) * ( 1.0f - 入力イメージの色 ) )

bool SDX::Blend::SoftLight ( Image 合成イメージ,
const Image 入力イメージ,
double  合成率 
)

ソフトライト合成.

合成イメージの色が0.5以下の部分は暗く、それ以外は明るくする合成。
[計算方法]
GrHandleの色が0.5以下:
合成後の色 = pow( 合成元, ( 1.0f - 入力 ) * 2.0 )
それ以外:
合成後の色 = pow( 合成元, 0.5 / 入力 )