Foundation > コンテナー > コンテナーの表示
 
コンテナーの表示
コンテナーを表示するメンバー関数については、以下で説明します。
*描画メンバー関数
*ジオメトリー変換
*ダブル・バッファリングの管理
*ディスクからオブジェクトを読み込む
描画メンバー関数
メンバー関数 draw および reDraw は、親クラスの IlvDrawingView から継承されたものですが、コンテナーとは特定の方法で対話します。下記は、これらの特定のメンバー関数です。
*draw   は、IlvContainer オブジェクトに格納されているすべての IlvGraphic オブジェクトを描画します。オブジェクトをコンテナーに追加するには、このメソッドを呼び出すだけで十分です。2 つの仮想メンバー関数を使うと、宛先ポートやトランスフォーマーに関係なく、指定されたクリッピング領域に描画できます。
*reDraw  作業領域を更新する場合 (オブジェクトを移動する場合など) はこのメソッドを使用します。これは draw メソッドを呼び出す前に、指定されたクリッピング領域を消去します。
*reDrawObj  グラフィック・オブジェクトに適用すると、オブジェクトのバウンディング・ボックスを再描画します。
*bufferedDraw  隠しピクセル・マップで仮描画を実行して、画面上に速やかにピクセル・マップを表示します。ダブル・バッファリングとの違いは、この処理が、矩形、領域、またはオブジェクトにローカライズされ、描画処理中に限りこれが続くことです。
1 つの関数が指定された IlvRect オブジェクトに含まれる領域を描画し、別の関数が指定された IlvRegion オブジェクトに含まれる領域を描画します。これは両方ともコンテナーの座標系に描画します。3 つ目の関数が、指定された IlvGraphic オブジェクトをオブジェクトの座標系に描画します。
ジオメトリー変換
メンバー関数の中にはコンテナー・ビューに適用するジオメトリー変換を処理するものがあります。これはビューに関連付けられた IlvTransformer オブジェクトを処理します。
*getTransformer  コンテナー・ビューに関連付けられたトランスフォーマーを返します。0 が返される場合、このコンテナーにはトランスフォーマーがありません。つまり、オブジェクトとそのディスプレイが同一だということです。
*setTransformer  指定されたトランスフォーマーのパラメーターを設定します。
*addTransformer  パラメーターとして与えられたトランスフォーマーで、現在のトランスフォーマーを設定して、結果的に得られたトランスフォーマーを、新たに現在のトランスフォーマーとして設定します。
*translateView および zoomView  現在のトランスフォーマーを移動トランスフォーマーおよびズーム・トランスフォーマーでそれぞれ設定します。
*fitToContents  コンテナー・ビューをリサイズして、可視アトリビュートが IlTrue にセットされているすべてのオブジェクトが、バウンディング・ボックスにぴったり収まるようにします。ビューの左上の座標は、同じ位置に留まります。このメソッドは一般的に、コンテナーがファイルから IlvGraphic オブジェクト一式を読み込む場合に使用されます。オブジェクトの位置は事前に認識されません。
IlvRect size(0, 0, 300, 300);
IlvContainer* cont = new IlvContainer(display, “Cont”, “My Window”,
size, IlTrue, IlFalse);
cont->readFile(“myfile.ilv”);
cont->fitToContents();
*fitTransformerToContents  可視アトリビュートが IlTrue に設定されたすべてのオブジェクトがビューで表示できるように、新しいトランスフォーマーを計算します。コンテナーのビュー・サイズは変更されません。IlBoolean 引数が IlTrue に設定されると、IlvDrawingView::reDraw が呼び出されます。このメソッドは一般的に、マップを何度かズームした後に全体を見る場合に使用します。
static void
ShowAllMap(IlvContainer* container)
{
container->fitTransformerToContents(IlTrue);
}
ダブル・バッファリングの管理
ダブル・バッファリング・モードではアニメーション表示や多数のオブジェクトをちらつきなく表示することが可能になります。このモードは、次のメンバー関数によって処理されます。
*setDoubleBuffering  コンテナーがダブル・バッファリングを使用するかどうかを指定します。
*isDoubleBuffering  ダブル・バッファリングを使用中かどうかを通知します。
ディスクからオブジェクトを読み込む
オブジェクトをディスクから読み込むには、次の 2 つのメンバー関数を利用します。
*readFile  名前がパラメーターとして指定されているファイルを読み込みます。
*read  パラメーターとして指定された入力ストリームから読み込みます。
これらのメンバーは両方とも、読み込みの結果を返します。問題なく読み込めた場合は IlTrue、エラーが発生した場合は IlFalse となります。
メモ: コンテナーはマネージャーと異なり、コンテンツを保存する write メンバー関数を備えていません。マネージャーの詳細については、『Manager』マニュアルを参照してください。

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.