Classes
Class | Description | |
---|---|---|
CFviPaintCircle | 画像ペイント図形クラス(円) | |
CFviPaintEllipse | 画像ペイント図形クラス(楕円) | |
CFviPaintFigure | 画像ペイント図形クラスの基本クラス | |
CFviPaintLine | 画像ペイント図形クラス(直線) | |
CFviPaintLineSegment | 画像ペイント図形クラス(線分) | |
CFviPaintPoint | 画像ペイント図形クラス(点) | |
CFviPaintPolyline | 画像ペイント図形クラス(折れ線) | |
CFviPaintRectangle | 画像ペイント図形クラス(矩形) | |
ErrorCode | エラーコード(画像ペイント関連) | |
Function | 画像ペイント関数群 |
Enumerations
Remarks
ここには、画像ペイント関連の機能を集約しています。
画像ペイントとは、画像上の任意の位置に図形を直接描画する機能です。
描画処理は、描画関数または画像ペイント図形クラスを使用します。 描画関数は、描画先の画像オブジェクトと描画情報(図形、濃度値等)を指定して描画処理を実行するものです。 画像ペイント図形クラスは、Draw メソッドに描画先の画像オブジェクトを指定して描画処理を実行します。 描画情報(図形、濃度値等)は自身に保有しています。
座標の制限:
図形の描画座標は、-16777216.0~16777215.0 の範囲に限定されます。 範囲を超える座標が指定された場合は、各描画関数(またはクラス)がエラーを返します。 この制限は、全ての図形に共通します。
小数点の扱い:
与えられた座標点、半径などの値は四捨五入され描画されます。
濃度値:
濃度値を格納した配列の要素数は、描画先の画像のチャネル数だけ必要となります。
但し、 RGB32 形式のみチャネル数は 1、濃度値の配列の要素数は 3 で固定となります。
濃度値を格納した配列の要素数がチャネル数以上の場合は、エラーとはなりませんが処理には使用されません。
濃度値は、描画先の画像の型毎に有効な値に変換されます。
描画先の画像が D64 、 BIN 形式以外では、濃度値は四捨五入で整数に変換されます。
濃度値が画像種別の濃度値範囲を超えていた場合は、サチュレーション処理が行われます。
BIN 形式は、0 または 1 に変換されます。0 以下の値は 0 に、それ以外は 1 となります。
領域の塗りつぶし:
円、楕円、長方形、多角形は線の描画以外に、内側、外側の塗りつぶし処理が行えます。
その際、内側の塗りつぶしは描画される線を含み、外側の塗りつぶしは描画される線を含みません。
塗りつぶしは、ポリゴンと輪郭とスキャンラインの交点を求め、
求められた各点の間を水平成分で結んでいく処理を各スキャンラインについて繰り返すことで実現されています。
その為、例えば一筆書きで描かれた星型のように内側にできる閉じた領域は塗りつぶされません。
処理可能な画像種別とチャネル及び濃度値の扱い:
画像種別 | チャネル数 | 濃度値の扱い |
---|---|---|
BIN | 1~16 | 各要素の濃度値を 0/1 に正規化して、各チャネルに適用します。 |
UC8 | 1~16 | 各要素の濃度値を 0~255 に正規化して、各チャネルに適用します。 |
S16 | 1~16 | 各要素の濃度値を -32768~32767 に正規化して、各チャネルに適用します。 |
US16 | 1~16 | 各要素の濃度値を 0~65535 に正規化して、各チャネルに適用します。 |
D64 | 1~16 | 各要素の濃度値を、各チャネルに適用します。 |
RGB32 | 1 | 各要素(0,1,2)の濃度値を 0~255 に正規化して、それぞれ 各プレーン(R,G,B)に適用します。 尚、ビット深度は 8bit にのみ対応しています。それ以外のビット深度の時はエラーは返さず無視されます。 |
処理ウィンドウ:
全ての描画処理は、描画関数(またはクラス)に指定した画像オブジェクトが持つ処理ウィンドウの範囲にのみ適用されます。 例えば、下図のように線分を画像に描画するとします。
この時、画像オブジェクトの処理ウィンドウが下図(青い塗りつぶし部分)のように設定されていると、 処理ウィンドウの範囲外には描画されません。 線分の赤い部分が描画される部分、灰色の部分が描画されない部分です。
但し、図形の描画開始位置は、処理ウィンドウの始点に依存しますので、傾きがある線は完全に一致しない場合があります。 下図の丸印(○)で示す箇所が一致しない画素です。この挙動は、直線や線分だけでなく、全ての図形に共通します。