ImageViewerは、多重画像レイアウトで多くの項目をサポートします。ただし、一部のアプリケーションではビューワでは1つの画像を使用し、レイアウトをセットアップしたり項目コレクションを処理しようとしない場合があります。この種のアプリケーションのために、ImageViewerは単一の項目モードを提供します。
画像ビューワの項目に記載されているように、項目がビューワにあるならば、1つはアクティブな項目として寄与されます、そして、画像ビューワのレイアウトから、ビューワは項目 ― アクティブな項目 ― で単一の項目を示すImageViewerSingleViewLayoutをサポートします。したがって、常に単一の項目を表示するようビューワをセットアップするのは簡単です。
// Create a single view layout
var layout = new ImageViewerSingleViewLayout();
// Create the viewer, passing this layout
var imageViewer = new ImageViewer(layout);
// Add an empty item
var item = new ImageViewerItem();
imageViewer.Items.Add(item);
// Now, ImageViewer.ActiveItem is item
これは、正確にImageViewerのデフォルトのコンストラクタがそうするものです:
var imageViewer = new ImageViewer();
ビューワがこのようなセットアップであったあと、ビューレイアウトと項目コレクションを忘れて、ただイメージを表示するためにActiveItemプロパティを使うことは簡単です。ビューワにimageを設定します:
imageViewer.ActiveItem.Image = myImage;
またはimageを削除します:
imageViewer.ActiveItem.Image = null;
その変換を取得すること:
var transform = imageViewer.GetItemImageTransform(imageViewer.ActiveItem);
またはimageから制御座標にポイントを変換して:を後退させます
controlPoint = imageViewer.ConvertPoint(imageViewer.ActiveItem, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, imagePoint);
imagePoint = imageViewer.ConvertPoint(imageViewer.ActiveItem, ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, controlPoint);
ActiveItemプロパティを使うことに加えて、ビューワは、単一の項目モードで使われることができるショートカットメソッドとプロパティも格納します。以下は、これらのショートカットを使用することより上に同じcodeです。ビューワにimageを設定します:
imageViewer.Image = myImage;
またはimageを削除します:
imageViewer.Image = null;
その変換を取得すること:
var transform = imageViewer.ImageTransform;
またはimageから制御座標にポイントを変換して:を後退させます
controlPoint = imageViewer.ConvertPoint(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, imagePoint);
imagePoint = imageViewer.ConvertPoint(null, ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, controlPoint);
これらのプロパティ/メソッドで、「ビュー」または「項目」のプロパティまたはメソッドを少しでもタッチすることなく、ImageViewerコントロールを使うことができます。これらのショートカットは、アクティブな項目がビューワに追加されることを確認するために、すべての必要なチェックを実行します。たとえば、ImageViewer.Imageは、メソッドがこのように実装されることを取得します:
if (this.ActiveItem != null) // Do we have an active item?
return this.ActiveItem.Image; // Yes, return its image
else
return null; // No, return null
そして、設定されたメソッド:
if (this.ActiveItem != null) // Do we have an active item?
this.ActiveItem.Image = value; // Yes, set its image
// Else, nothing to do
以下は、すべての単一の項目モードショートカットと対応する内部コードをリストします:
これらのショートカットに加えて、ImageViewerが単一の項目モードで使われる時だけ、以下は使われるメンバです:
メンバ | 説明 |
---|---|
ImageViewer.AutoResetOptions |
新しいimageがビューワに設定されるとき、どの変換値をリセットするべきか決定します。 |
ImageViewer.Reset |
変換値をリセットします |