GraphicsPathIterator.HasCurve メソッド

GraphicsPathIterator オブジェクトに関連付けられているパスに曲線が含まれているかどうかを示します。

Public Function HasCurve() As Boolean
[C#]
public bool HasCurve();
[C++]
public: bool HasCurve();
[JScript]
public function HasCurve() : Boolean;

戻り値

このメソッドは、現在のサブパスに曲線が含まれている場合は true を返します。それ以外の場合は false を返します。

解説

パス内のすべての曲線は、ベジエ スプラインのシーケンスとして格納されています。たとえば、パスに楕円を追加する場合は、その楕円に外接する四角形の左上隅の位置、幅、および高さを指定します。しかし、これらの数値 (左上隅の位置、幅、および高さ) がパスに格納されるわけではなく、楕円そのものが、4 本のベジエ スプラインのシーケンスに変換されます。パスには、これらのベジエ スプラインのエンドポイントと制御点が格納されます。

パスにはデータ点の配列が格納され、それぞれの点は直線またはベジエ スプラインに属しています。配列内のいくつかの点がベジエ スプラインに属している場合、 HasCurvetrue を返します。配列内のすべての点が直線に属している場合は、 HasCurvefalse を返します。

メソッドの中には、パスを平坦にする、つまり、パス内のすべての曲線を連続した複数の直線に変換するメソッドもあります。パスが平坦にされた後で HasCurve を呼び出した場合は、必ず false が返されます。 GraphicsPath クラスの Flatten、Widen、または Warp の各メソッドを呼び出すと、パスが平坦になります。

使用例

[Visual Basic, C#] 次の例は、Windows フォームでの使用を意図してデザインされており、 OnPaint イベントのオブジェクトである PaintEventArgs e が必要です。このコードは次のアクションを実行します。

  • GraphicsPath オブジェクト myPath を作成します。
  • 3 本の直線、1 つの四角形、および 1 つの楕円を追加します。
  • myPath 用の GraphicsPathIterator オブジェクトを作成します。
  • 現在のパス myPath に曲線が含まれているかどうかを確認します。
  • 確認した結果をメッセージ ボックスに表示します。
 
Public Sub HasCurveExample(e As PaintEventArgs)
Dim myPath As New GraphicsPath()
Dim myPoints As Point() =  {New Point(20, 20), _
New Point(120, 120), New Point(20, 120), New Point(20, 20)}
Dim myRect As New Rectangle(120, 120, 100, 100)
myPath.AddLines(myPoints)
myPath.AddRectangle(myRect)
myPath.AddEllipse(220, 220, 100, 100)
' Create a GraphicsPathIterator for myPath.
Dim myPathIterator As New GraphicsPathIterator(myPath)
Dim myHasCurve As Boolean = myPathIterator.HasCurve()
MessageBox.Show(myHasCurve.ToString())
End Sub
        
[C#] 
private void HasCurveExample(PaintEventArgs e)
{
// Create a path and add three lines,
// a rectangle and an ellipse.
GraphicsPath myPath = new GraphicsPath();
Point[] myPoints =
{
new Point(20, 20),
new Point(120, 120),
new Point(20, 120),
new Point(20, 20)
};
Rectangle myRect = new Rectangle(120, 120, 100, 100);
myPath.AddLines(myPoints);
myPath.AddRectangle(myRect);
myPath.AddEllipse(220, 220, 100, 100);
// Create a GraphicsPathIterator for myPath.
GraphicsPathIterator myPathIterator = new
GraphicsPathIterator(myPath);
// Test for a curve.
bool myHasCurve = myPathIterator.HasCurve();
// Show the test result.
MessageBox.Show(myHasCurve.ToString());
}
        

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

GraphicsPathIterator クラス | GraphicsPathIterator メンバ | System.Drawing.Drawing2D 名前空間