Layer.stretchCopy

機能/意味

拡大縮小コピー

タイプ
Layerクラスのメソッド
構文
stretchCopy(dleft, dtop, dwidth, dheight, src, sleft, stop, swidth, sheight, type=stNearest, option=1)
引数
dleft

コピー先の矩形の左端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。

dtop

コピー先の矩形の上端位置を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。

dwidth

コピー先の矩形の横幅を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。

dheight

コピー先の矩形の縦幅を ( コピー先レイヤの画像位置における ) ピクセル単位で指定します。

src

コピー元のレイヤオブジェクトを指定します。
Bitmap クラスのオブジェクトも指定可能です。

sleft

コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

stop

コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

swidth

コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

sheight

コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。

type

拡大縮小のタイプを指定します。

  • stNearest : 最近傍点法が用いられます
  • stFastLinear : 低精度の線形補間が用いられます(一部実装)
  • stSemiFastLinear : 固定小数線形補間が用いられます
  • stLinear : 線形補間が用いられます
  • stFastCubic : 固定小数3次元補間が用いられます
  • stCubic : 3次元補間が用いられます
  • stFastLanczos2 : 固定小数Lanczos補間の範囲4x4が用いられます
  • stLanczos2 : Lanczos補間の範囲4x4が用いられます
  • stFastLanczos3 : 固定小数Lanczos補間の範囲6x6が用いられます
  • stLanczos3 : Lanczos補間の範囲6x6が用いられます
  • stFastSpline16 : 固定小数スプライン補間4x4が用いられます
  • stSpline16 : スプライン補間4x4が用いられます
  • stFastSpline36 : 固定小数スプライン補間6x6が用いられます
  • stSpline36 : スプライン補間6x6が用いられます
  • stFastAreaAvg : 固定小数面積平均縮小が用いられます。拡大は出来ません
  • stAreaAvg : 面積平均縮小が用いられます。拡大は出来ません
  • stFastGaussian : 固定小数ガウス補間4x4が用いられます
  • stGaussian : ガウス補間4x4が用いられます
  • stFastBlackmanSinc : 固定小数Blackman-Sinc補間8x8が用いられます
  • stBlackmanSinc : Blackman-Sinc補間8x8が用いられます

速度は stNearest > stFastLinear > stLinear > stCubic の順に高速ですが、画質は速度が速ければ速いタイプほど低画質になります。
stCubic 以降の補間方法は十分高画質で好みの差とも言えます。
ただし、ガウス補間についてはぼやけたような画質になります。
stFastLinear と他の線形補間(stSemiFastLinear と stLinear)の差は縮小時に大きく出ます。
stFastLinear は、常に周囲4画素を参照するのに対して、stSemiFastLinear、stLinear は、縮小時は等倍時の影響範囲が4画素となるような範囲、つまりより広い範囲の画素を参照し補間するためより高画質です(アルゴリズム的には本来の線形補間です)。
stFastLinear に対しては、stRefNoClip をビット論理和で追加指定することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを許可します。
これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある範囲内のピクセルの色と見なされます)。

option

3次元補間時のシャープネスです。
他の補間方法では現在のところ意味を持ちません。
シャープネスの値をプラス方向に大きくするとぼやけていき、マイナス方向に大きくしていくとシャープになっていきます。

戻り値
なし (void)
説明

指定されたコピー元レイヤの矩形を、コピー先 ( メソッドを実行するレイヤ ) の矩形にコピーします。
コピー元矩形とコピー先矩形のサイズが異なる場合は拡大または縮小が行われます。
現バージョンでは stFastLinear の指定で線形補間が効くのは、重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが dfAlpha (または dfBoth) または dfAddAlpha の場合です。
また、Layer.face プロパティが dfOpaque で、Layer.holdAlpha プロパティが偽の時も線形補間が可能です。
また、現バージョンでは stLinear あるいは stCubic の指定が有効なのは、左右/上下反転を伴わず、コピー先矩形がレイヤをはみ出さない場合のみです。
重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティがdfAlpha (または dfBoth) または dfAddAlpha の場合は、メイン画像とマスク画像の両方がコピーされます。
dfOpaque (または dfMain) の場合は、Layer.holdAlpha プロパティが真の時はメイン画像のみがコピーされ、偽の時はメイン画像とマスク画像の両方がコピーされます。