Strokes.GetBoundingBox メソッド (BoundingBoxMode)
指定された BoundingBoxMode フラグを使用して境界を決定し、Stroke オブジェクトを含む、外接する Rectangle を返します。
名前空間 : Microsoft.Ink
アセンブリ : Microsoft.Ink (Microsoft.Ink.dll 内)
構文
'宣言
Public Function GetBoundingBox ( _
mode As BoundingBoxMode _
) As Rectangle
'使用
Dim instance As Strokes
Dim mode As BoundingBoxMode
Dim returnValue As Rectangle
returnValue = instance.GetBoundingBox(mode)
public Rectangle GetBoundingBox(
BoundingBoxMode mode
)
public:
Rectangle GetBoundingBox(
BoundingBoxMode mode
)
public Rectangle GetBoundingBox(
BoundingBoxMode mode
)
public function GetBoundingBox(
mode : BoundingBoxMode
) : Rectangle
パラメータ
- mode
型 : Microsoft.Ink.BoundingBoxMode
BoundingBoxMode 列挙体のメンバ。これは、Strokes コレクションの境界ボックスの計算で使用する Strokes コレクションの特性 (描画属性など) を指定します。
戻り値
型 : System.Drawing.Rectangle
Strokes コレクションの境界ボックスを定義する、外接する Rectangle を返します。
解説
外接する Rectangle はインク空間座標内にあります。
外接する Rectangle は、Strokes コレクションを表示するときに無効化または再描画する表示部分に対応しています。
境界ボックスは、BoundingBoxMode モード以外のすべてのモードでキャッシュされます。
境界ボックスがペンの幅の影響を受ける場合は、Renderer オブジェクトのビュー変換に合わせてペンの幅が適切にスケーリングされます。つまり、ペンの幅はビュー変換の行列式の平方根で乗算されてスケーリングされます。
メモ : |
---|
ペンの幅を明示的に設定していない場合、既定値は 53 です。正しい境界ボックスを生成するためには、ペンの幅を行列式の平方根で乗算する必要があります。境界ボックスの高さと幅はそれぞれ、この計算結果値の 1/2 だけ拡大されます。たとえば、ペンの幅が 53 で行列式の平方根が 50、境界ボックスが (0, 0, 1000, 1000) であるとします。ペンの幅は (53 * 50) / 2 の計算結果に従って、境界ボックスの各方向に対して調整され、右側と下側は 1 ずつ増えます。この結果、(-1325, -1325, 2326, 2326) の境界ボックスが描画されます。 |
メモ : |
---|
このメソッドが返す、外接する Rectangle は、Strokes コレクションの境界ボックスのコピーです。このメソッドが返す Rectangle を変更しても、元の Strokes コレクションの境界ボックスには影響しません。 |
例
この例では、InkOverlay オブジェクトの Strokes コレクションが、元の境界ボックスの左半分に納まるようにスケーリングされます。まず、境界ボックスの境界を決定するための BoundingBoxMode 列挙型の CurveFit 値を使用して、GetBoundingBox メソッドを呼び出すことで、Strokes コレクションに外接する四角形が取得されます。次に、この四角形の幅を半分にした新しい四角形が作成され、ScaleToRectangle メソッドに渡されます。
' Access to the Strokes property returns a copy of the Strokes object.
' This copy must be implicitly (via using statement) or explicitly
' disposed of in order to avoid a memory leak.
Using allStrokes As Strokes = mInkOverlay.Ink.Strokes
Dim bounds As Rectangle = allStrokes.GetBoundingBox(BoundingBoxMode.CurveFit)
Dim halfRectangle As Rectangle = _
New Rectangle(bounds.Left, bounds.Top, bounds.Width / 2, bounds.Height)
allStrokes.ScaleToRectangle(halfRectangle)
End Using
// Access to the Strokes property returns a copy of the Strokes object.
// This copy must be implicitly (via using statement) or explicitly
// disposed of in order to avoid a memory leak.
using (Strokes allStrokes = mInkOverlay.Ink.Strokes)
{
Rectangle bounds = allStrokes.GetBoundingBox(BoundingBoxMode.CurveFit);
Rectangle halfRectangle =
new Rectangle(bounds.Left, bounds.Top, bounds.Width / 2, bounds.Height);
allStrokes.ScaleToRectangle(halfRectangle);
}
プラットフォーム
Windows Vista
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 3.0