[Visual Basic] Public Function CustomFilter( _ matrix(,) As Integer, div As Integer, level As Integer, _ red As Boolean, green As Boolean, blue As Boolean _ ) As Boolean
[C#] public bool CustomFilter( int[,] matrix, int div, int level, bool red, bool green, bool blue );
パラメータ
- matrix
- 9×9行列の係数(9×9の二次元配列)
- div
- 行列に対する除数
- level
- 行列に対する加減(0~255 大きいほど明るい)
- red
- 赤のプレーンに対する処理(false:しない、true:する)
- green
- 緑のプレーンに対する処理(false:しない、true:する)
- blue
- 青のプレーンに対する処理(false:しない、true:する)
戻り値
成功の場合は true、失敗の場合は false を返します。
解説
グレースケールのイメージを処理する場合は、red,green,blueで設定された値は無効となります。
処理対象となるイメージを Image プロパティもしくは
Layer(LayerNumber).Image
プロパティに設定します。
(8ビットグレースケール,16,24,32ビットイメージが対象で LayerNumber
プロパティによって処理されるイメージが決まります)
イメージ全体に対して処理を行いたい場合は、SelectMode プロパティに EffectAll
を設定します。
マスクハンドルを基に処理を行いたい場合は、SelectMode プロパティに EffectMask を設定し
SourceMask
プロパティに有効な値を設定します。
選択した多角形に対して処理を行いたい場合には、SelectMode プロパティに EffectPolygon を設定し
Point プロパティに有効な値を設定します。
選択した円形に対して処理を行いたい場合には、SelectMode プロパティに EffectEllipse を設定し
Rect プロパティに有効な値を設定します。
SelectModeプロパティが EffectPolygon
と EffectEllipse の場合には Inside
プロパティに値の設定が必要です。
成功した場合、処理後のイメージは DestinationAsImageKitImage
プロパティが True の場合は LayerNumber プロパティの示すプロパティ(Image もしくは Layer(LayerNumber).Image)に、False
の場合は DestinationImage
プロパティに設定されます。
出力するピクセルの計算式は以下のようになります。
Piはピクセルの値、Ciはmatrixの係数の値を表します。
簡単なエンボスフィルタの例を示します。
div = 1、level = 128
上の表の値はmatrixの配列のデータを示します。(左から右へ、上から下へいく毎に添字が増える)
参照
ImageKit.Effect メンバ | Newtone.ImageKit.WPF.ImageKit