ROIの主な特性
ROIは、幅、高さ、原点のx座標とy座標によって定義されます。
原点は親画像またはROIの左上の角を基準にして指定されます。
ROI全体がその親画像内に含まれていなければなりません。
OrgXおよびWidthが8の倍数である場合、BW1 ROIの処理/解析時間が短縮されます。
ROI は、親に設定されているパラメータとともに親(画像/ROI)にアタッチされます。これらのリンクはダングリングポインタを避けて透過的に更新されます。
通常の画像を別の画像やROIにアタッチすることはできません。
SetおよびGet関数は、ROIの幅、高さおよび原点の位置を、その近接または一番上の親画像を基準にして変更または照会します。
1枚の画像が任意の数のROIに対応しており、ROIは階層状にネストされます。 ROIを移動すると、それに合わせて埋め込まれているROIも移動します。 画像/ROIクラスでは、画像に関連付けられているROIの階層を横断するためのメソッドがいくつかあります。
ネストされた ROI:2つのサブROIがROIにアタッチされており、そのROI自体も親画像にアタッチされている
CropToImageは一部が画像の外側にあるROIをクロップします。 サイズを変更したROIが拡大されることはありません。
何らかの関数が親の外側を超える境界を持つROIを使用しようとすると例外が投げられます。
注記: (Open eVision 1.0.1以前では、ROIが画像の外側に位置付けられるとROIの大きさが少し調整されたり位置が変更されたり、時折拡大されたりしていました。 ROIの境界が親の外側になると、ROIは親の境界内に収まるように大きさが少し調整されていました。)
- ROIは2つの関数とハンドルのドラッグによって簡単にサイズ変更したり位置決めできます。
- EBaseROI::.Dragはカーソルの移動に伴ってROI座標を調整します。
- EBaseROI::.HitTestはハンドルのドラッグによってカーソルが配置されているかどうかを知らせます。 ハンドルが分かると、OnSetCursor MFCイベントハンドラによってカーソルの形状が変更することがあります。 ドラッグ中に呼び出された場合、HitTestは予測不能です。
HitTestはOnSetCursor MFCイベントハンドラでカーソルの形状を変えるために使用することもできますし、ドラッグ操作の前であれば、OnLButtonDown
(またはBorland/CodeGearのOWLのEvSetCursorおよびEvLButtonDown)
(またはBorland/CodeGearのVCLのFormMouseMoveおよびFormMouseDown)のように使用できます。
VB6では、MouseDown、MouseMove、MouseUpイベントは現在のカーソル位置をピクセルではなく、twipで戻すため、変換は必須です。