画像ビュー

Namespace: FVIL.Forms
Assembly: FVILforms (in FVILforms.dll) Version: 3.1.0.0 (3.1.0.9)

Syntax

C#
[SerializableAttribute]
public class CFviImageView : UserControl
Visual Basic
<SerializableAttribute>
Public Class CFviImageView
	Inherits UserControl

Remarks

画像表示及びオーバレイ表示を行う為のコントロールです。



初期値と範囲:
プロパティ初期値範囲
DisplayCFviDisplay の初期値CFviDisplay のインスタンス (インスタンスの差し替えはできません。)
DisplayRectangleRealクライアント領域の四角形(取得のみ)
EnableScrollBartruetrue/false
EnableMouseGripfalsetrue/false
EnableMouseWheeltruetrue/false
FocusModeFocusModeFocusMode.LDown
ImagenullCFviImage のインスタンス
ScrollBarHVisibleプロパティ=falseSystem.Windows.Forms.HScrollBar のインスタンス (取得のみ)
ScrollBarVVisibleプロパティ=falseSystem.Windows.Forms.VScrollBar のインスタンス (取得のみ)

デザイン時:

このコントロールをフォームのクライアント領域の任意の位置に貼り付けて使用してください。 貼り付けは、下図のようにデザイン時に行えます。


ツールボックス項目:


WIL 3.0 と WIL 3.1 のコンポーネントを同時に表示することができません。 プロジェクトが参照する FVIL バージョンに合わせてツールボックス項目のバージョンを切り替える必要があります。 詳しくは、このマニュアルの メインページ/過去のバージョンとの互換性/ツールボックス項目の切り替え をご参照ください。


設定例:

下図のように、Dock プロパティを Fill にすると、 フォーム全体に張り付き、フォームのサイズ変更に合わせて自動的にリサイズされます。



実行時:

下記に示すオーバレイ表示機能を実装しています。
オーバレイ領域を追加する場合は、 このクラスの Display プロパティを介して Overlays 配列に CFviOverlay のインスタンスを追加してください。 CFviOverlay クラスを継承する事で、 ユーザ独自のオーバレイ表示機能を作成して追加する事も可能です。

C# Copy imageCopy
// [1] 画像ビューのインスタンス生成.
// ※この処理はデザイナで貼り付けた際に生成されます.
FVIL.Forms.CFviImageView m_view = new FVIL.Forms.CFviImageView();

// [2] オーバレイを生成.
FVIL.GDI.CFviOverlay    overlay1 = new FVIL.GDI.CFviOverlay();
FVIL.GDI.CFviOverlay    overlay2 = new FVIL.GDI.CFviOverlay();

// [3] オーバレイを追加.
//     初期状態ではオーバレイが格納されていませんので、指標 0 から追加されます.
m_view.Display.Overlays.Add( overlay1 );    // index=0
m_view.Display.Overlays.Add( overlay2 );    // index=1

// [4] 各オーバレイに図形を描画.
//     追加したオーバレイにアクセスする際は,
//     m_view.Display.Overlays[0] のように固定の配列指標でアクセスせず,
//     下記のようにインスタンスハンドルを介してアクセスすることを推奨します.
//     そうしなければ初期状態のオーバレイ枚数が変化した場合にコーディングの書き換えが発生します.
// 1) 
overlay1.Figures.Add(new FVIL.GDI.CFviGdiRectangle(0,0,100,50));
overlay1.Figures.Add(new FVIL.GDI.CFviGdiLineSegment(0,0,100,50));
// 2)
overlay2.Figures.Add(new FVIL.GDI.CFviGdiCircle(10,10,50));
overlay2.Figures.Add(new FVIL.GDI.CFviGdiEllipse(10,10,25,50,45));

参考1)

CFviDisplay の Overlays や CFviOverlay の Figures は、 クラス(class)のインスタンスハンドルを要素とする List コレクションですので、 Add メソッドで追加するとインスタンスハンドルが追加されます。 インスタンスのコピーが追加されるものではありません。 従って、上記[4]のようにインスタンスハンドルを介してアクセスできます。


参考2)

オーバレイに追加した図形の除去は、 CFviOverlayRemoveFigure(CFviGdiFigure) メソッドか、 Figures プロパティを介して Remove メソッドを呼び出す方法があります。 前者は指定されたインスタンスを Figures プロパティ内から検索する際に ReferenceEquals を使用します。 後者は Equals を使用します。この場合、内容が一致するものを除去します。 同一インスタンスを除去する場合は前者(RemoveFigure)を使用する方法が簡潔です。
オーバレイに追加した図形をすべて消去する場合は Figures プロパティを介して Clear メソッドを実行してください。


既定のオーバレイ:

既定では以下の 5 種類のオーバレイを保有しています。


これらのオーバレイは、 CFviDisplay の public メンバとして実装されています。 Overlays 配列に格納されているものではありません。 これらの設定値を変更する場合は、 このクラスの Display メンバを介してアクセスしてください。 但し、従来バージョン(1.x 系)との互換性の為 SetOverlayEnable(Int32, Boolean) メソッドや SetOverlayActive(Int32, Boolean) メソッドにも対応しています。

以下に各オーバレイの表示イメージと概要を示します。詳しくは、各クラスの説明をご参照ください。

OverlayIDクラス概要スクリーンショット
2CFviDrawGridImage プロパティに設定されている画像の全面にグリッドをオーバレイ表示します。

このクラスの Display.OverlayGrid.Enabletrue に設定すると、この機能が有効になります。
3CFviDrawProcareaImage プロパティに設定されている画像の処理範囲をオーバレイ表示します。

このクラスの Display.OverlayProcarea.Activetrue に設定すると、この機能が有効になり、マウス操作による処理範囲の変更が行えます。

マウス操作を行わず、常時表示のみ行う場合は、Activefalse に設定し、 Display.OverlayProcarea.Enabletrue に設定してください。
1CFviDrawAscopeImage プロパティに設定されている画像の濃度波形をオーバレイ表示します。

このクラスの Display.OverlayAscope.Activetrue に設定すると、この機能が有効になり、マウスが指し示す部分の画像座標(サブピクセル表示可)と濃度値を表示します。

カーソル位置(黄色い十字)をマウスに追従させたくない場合は、Activefalse に設定し、 Display.OverlayAscope.Enabletrue に設定してください。
4CFviDrawPatternRegist パタン登録位置と基準点を表示/編集します。

このクラスの Display.OverlayPatternRegist.Activetrue に設定すると、この機能が有効になり、マウス操作による編集が行えます。

マウス操作を行わず、表示のみ行う場合は、Activefalse に設定し、 Display.OverlayPatternRegist.Enabletrue に設定してください。

右図の緑色の矩形が登録位置を表し、赤色の十字が基準点を表します。 このオーバレイは、マウス操作で登録位置と基準点を編集するものです。 パタン生成は、別途行う必要があります。
5CFviDrawPatternModifyImage プロパティに設定されている画像が パタン画像 の時、 マスク値の編集が行えます。

このクラスの Display.OverlayPatternModify.Activetrue に設定すると、この機能が有効になり、マウス操作による編集が行えます。

マウス操作を行わず、表示のみ行う場合は、Activefalse に設定し、 Display.OverlayPatternModify.Enabletrue に設定してください。

右図の緑色の枠がマスク値の編集範囲を表しています。 赤色の塗りつぶしと緑色の塗りつぶしは、それぞれマスク部分と不可欠部分を可視化したものです。 これらの可視属性は、 Display.MaskEnableDisplay.EssentialMaskEnable で変更してください。

Inheritance Hierarchy

System..::..Object
System..::..MarshalByRefObject
System.ComponentModel..::..Component
System.Windows.Forms..::..Control
System.Windows.Forms..::..ScrollableControl
System.Windows.Forms..::..ContainerControl
System.Windows.Forms..::..UserControl
FVIL.Forms..::..CFviImageView

See Also