Manager > マネージャーの高度な機能 > マネージャー・グリッド
 
マネージャー・グリッド
ほとんどのエディターは、スナップ・グリッドを備えており、指定した位置で、マウス・イベントを強制的に発生させます。通常、位置決め装置を移動できる座標はグリッド・ポイントに配置されます。マネージャーが、標準マウス・イベントを許可するように構成されている場合、特定の位置でのみ発生するように、すべてのイベント位置を自動的に変更できます。そのため、マネージャー・グリッドによるユーザー・イベントのフィルターリング効果は、その位置を一番近いグリッド点に変更することです。
IlvManagerGrid クラスは、ビューで発生するイベントの座標の有効なグリッド点への変換を処理します。
マネージャーによって処理される各ビューのスナップ・グリッドを設定したり削除することができます。これらのグリッドを以下のように設定できます。
*表示または非表示
*アクティブまたは非アクティブ
IlvManagerGrid クラスをサブタイプすることによって、グリッドを異なる形状にすることができます。デフォルトの実装では、原点および水平、垂直間隔値を設定することができる矩形グリッドです。
グリッドを表示すると、palette パラメーターの前景色として指定された色でドットが描画されます。
visible パラメーターを IlFalse に設定して作成することにより、グリッドを非表示にすることもできます。グリッドを最初は非アクティブにするには、active パラメーターを IlFalse に設定します。
グリッド点のサブセットだけを表示したい場合は、最後から 2 つの IlvDim タイプのパラメーターを使用します。これらはサブセットの性質を指定します。つまり、水平軸と垂直軸に沿ったすべてのドットの一部だけを、指定の方向に表示します。ただし、イベント位置スナップは、表示/非表示を問わずグリッド点のそれぞれで起こります。
例:グリッドの使用
このコードはマネージャーに関連するビュー view に新規グリッドを設定します。
// Get the previous grid
IlvManagerGrid* previousGrid = manager->getGrid(view);
 
// Create a new instance of IlvManagerGrid
IlvManagerGrid* newGrid = new IlvManagerGrid(display->getPalette(),
IlvPoint(0, 0),
10,
10);
 
// Set the new grid to the view
manager->setGrid(view, newGrid);
 
// If a previous grid existed then delete it
if (previousGrid)
delete previousGrid;
 
通常、ビューにはグリッドがデフォルトで関連付けられていないため、既存のグリッドを削除する必要はありません。
以下のコードは、両端がグリッドの IlvLine を作成する方法を示します。
static void
AddSnappedLine(IlvManager* manager,
const IlvView* view,
const IlvPoint& start,
const IlvPoint& end)
{
IlvPoint p1 = start;
IlvPoint p2 = end;
 
// Compute the new coordinates
manager->snapToGrid(view, p1);
manager->snapToGrid(view, p2);
 
// Create an object IlvLine
IlvGraphic* object = new IlvLine(manager->getDisplay(), p1, p2);
 
// Add the object to the manager
manager->addObject(object);
}
 
グラフィック・オブジェクトを作成する Rogue Wave Views のすべての標準インタラクターは IlvManager::snapToGrid を使用します。

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