このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
Geometry クラス
Collapse the table of content
Expand the table of content

Geometry クラス

更新 : 2007 年 11 月

この抽象基本クラスから派生するクラスは、幾何学的図形を定義します。Geometry オブジェクトは、2-D グラフィックス データのクリッピング、ヒット テスト、およびレンダリングに使用できます。

名前空間 :  System.Windows.Media
アセンブリ :  PresentationCore (PresentationCore.dll 内)

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[TypeConverterAttribute(typeof(GeometryConverter))]
public abstract class Geometry : Animatable, 
	IFormattable
/** @attribute LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable) */
/** @attribute TypeConverterAttribute(GeometryConverter) */
public abstract class Geometry extends Animatable implements IFormattable
public abstract class Geometry extends Animatable implements IFormattable
このクラスは抽象クラスです。XAML で使用できる派生した非抽象クラスについては、継承階層 を参照してください。

Geometry と Shape の比較

System.Windows.Shapes.Shape クラスには、Geometry およびその派生クラスにはない、FillStroke などのレンダリング プロパティがあります。Shape クラスは FrameworkElement であるため、レイアウト システムに参加します。その派生クラスは、UIElement の子をサポートする要素のコンテンツとして使用できます。

一方、Geometry クラスは単純に図形のジオメトリを定義し、それ自体を描画できません。単純であるため、幅広く使用できます。

Freezable の機能 :Freezable クラスを継承するため、Geometry クラスはいくつかの特殊な機能を備えています。Geometry オブジェクトは、リソースとして宣言し、複数のオブジェクトで共有し、読み取り専用にしてパフォーマンスを向上させ、複製し、スレッド セーフにすることができます。Freezable のさまざまな機能の詳細については、「Freezable オブジェクトの概要」を参照してください。

継承元へのメモ :

このクラスは抽象クラスですが、パブリックに拡張することはできません。

この例では、Geometry オブジェクトを使用して複合図形を作成し、Path 要素を使用してこれらを表示する方法を示します。次の例は、LineGeometryEllipseGeometry、および RectangleGeometry を、GeometryGroup と共に使用して、複合図形を作成します。次に、Path 要素を使用してジオメトリを描画します。

<!-- Displays the geometry. --> 
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
  <Path.Data>

    <!-- Creates a composite shape from three geometries. -->
    <GeometryGroup FillRule="EvenOdd">
      <LineGeometry StartPoint="10,10" EndPoint="50,30" />
      <EllipseGeometry Center="40,70" RadiusX="30" RadiusY="30" />              
      <RectangleGeometry Rect="30,55 100 30" />
    </GeometryGroup>
  </Path.Data>
</Path>


// Create a Path to be drawn to the screen.
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 204, 204, 255);
myPath.Fill = mySolidColorBrush;

// Create the line geometry to add to the Path
LineGeometry myLineGeometry = new LineGeometry();
myLineGeometry.StartPoint = new Point(10, 10);
myLineGeometry.EndPoint = new Point(50, 30);

// Create the ellipse geometry to add to the Path
EllipseGeometry myEllipseGeometry = new EllipseGeometry();
myEllipseGeometry.Center = new Point(40, 70);
myEllipseGeometry.RadiusX = 30;
myEllipseGeometry.RadiusY = 30;

// Create a rectangle geometry to add to the Path
RectangleGeometry myRectGeometry = new RectangleGeometry();
myRectGeometry.Rect = new Rect(30, 55, 100, 30);

// Add all the geometries to a GeometryGroup.
GeometryGroup myGeometryGroup = new GeometryGroup();
myGeometryGroup.Children.Add(myLineGeometry);
myGeometryGroup.Children.Add(myEllipseGeometry);
myGeometryGroup.Children.Add(myRectGeometry);

myPath.Data = myGeometryGroup;

// Add path shape to the UI.
StackPanel mainPanel = new StackPanel();
mainPanel.Children.Add(myPath);
this.Content = mainPanel;


前の例で作成した図を次に示します。

複合ジオメトリ

GeometryGroup を使用して作成された複合ジオメトリ

多角形や曲線のセグメントを持つ図形など、より複雑な図形は、PathGeometry を使用して作成できます。PathGeometry を使用して図形を作成する方法の例については、「方法 : PathGeometry を使用して図形を作成する」を参照してください。この例では Path 要素を使用して画面に図形をレンダリングしますが、Geometry オブジェクトも、GeometryDrawing または DrawingContext のコンテンツの記述に使用することができます。またこれらは、クリッピングとヒット テストに使用することもできます。

この例は、より大きなサンプルの一部分です。サンプル全体については「ジオメトリのサンプル」を参照してください。

その他のコード

方法 : PathGeometry を使用して図形を作成するこの例では、PathGeometry クラスを使用して図形を作成する方法を示します。PathGeometry オブジェクトは 1 つ以上の PathFigure オブジェクトで構成され、各 PathFigure は異なる "形状" または図形を表します。各 PathFigure 自体は 1 つ以上の PathSegment オブジェクトで構成されており、このオブジェクトは形状または図形の接続されている部分を表します。セグメントの種類には、LineSegmentArcSegmentBezierSegment などがあります。
方法 : EllipseGeometry をアニメーション化するこの例では、Path 要素内で Geometry をアニメーション化する方法を示します。次の例では、PointAnimation を使用して EllipseGeometryCenter をアニメーション化します。

この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

Windows Vista

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0

コミュニティの追加

追加
表示:
© 2015 Microsoft