図形オブジェクト2D (GeometryObject2D)

概要

オブジェクト2Dクラスを拡張し、図形クラスを持った上でそれを描画できる2D描画オブジェクトです。
下の図のように、描画する図形にテクスチャを合成することも可能です。

図形オブジェクト2D

具体的には、Shapeプロパティに描画したい図形を設定すると、その形状の情報をもとに図形を描画します。

また、図形が線分以外の形状の時は、指定したテクスチャを図形に合成することが可能です。

主なメソッド

なし

主なプロパティ

名称 説明
Shape 描画する図形のハンドル
Texture 描画する2Dテクスチャのハンドル
AlphaBlendMode 図形描画の際に適用されるアルファブレンドの種類
CenterPosition 図形に適用する変換(拡大、回転、移動)の基準位置(親から見た相対座標にて設定)
Color 図形描画の際の合成色のRGBA値を0~255の間で指定(Aの値を255未満にすると透明になる。)
DrawingPriority 描画の優先順位
TextureFilterType 描画時のテクスチャフィルタ(近傍補間:Nearestもしくは線形補間:Linear)

主なイベント

なし

使用方法

GeometryObject2Dクラスのサンプルです。


  /// <summary>
  /// GeometryObject2Dのサンプル。図形を表示しています。
  /// </summary>
  class GeometryObject2D
  {
      [System.STAThread]
      static void Main(string[] args)
      {
          // AC-Engineを初期化する
          ace.Engine.Initialize("GeometryObject2D", 640, 480, new ace.EngineOption());
  
          // シーンを生成する
          var scene = new ace.Scene();
  
          var layer = new ace.Layer2D();
          var texture = ace.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png");
  
          // 図形描画クラスのコンストラクタを呼び出す
          var geometryObj1 = new ace.GeometryObject2D();
          var geometryObj2 = new ace.GeometryObject2D();
          var geometryObj3 = new ace.GeometryObject2D();
  
          // 図形描画クラスをレイヤーに追加する。
          layer.AddObject(geometryObj1);
          layer.AddObject(geometryObj2);
          layer.AddObject(geometryObj3);
  
          // レイヤーをシーンに追加する。
          scene.AddLayer(layer);
  
          // シーンを変更する。
          ace.Engine.ChangeScene(scene);
  
          // 弧を図形描画クラス1にて描画する。
          {
              // 弧の外径、内径、頂点数、中心位置、開始頂点番号、終了頂点番号を指定。
              var arc = new ace.ArcShape();
              arc.OuterDiameter = 100;
              arc.InnerDiameter = 10;
              arc.NumberOfCorners = 96;
              arc.Position = new ace.Vector2DF(300, 100);
              arc.StartingCorner = 90;
              arc.EndingCorner = 5;
  
              // 弧を描画する図形として設定し、合成するテクスチャも設定。
              geometryObj1.Shape = arc;
              geometryObj1.Texture = texture;
              geometryObj1.Position = new ace.Vector2DF(0, 0);
          }
  
          // 矩形を図形描画クラス2にて描画する。
          {
              // 矩形の描画範囲、UV範囲を指定。
              var rect = new ace.RectangleShape();
              rect.DrawingArea = new ace.RectF(10, 210, 300, 200);
              rect.UV = new ace.RectF(0, 0, 0.5f, 0.5f);
  
              // 矩形を描画する図形として設定し、合成するテクスチャも設定。
              geometryObj2.Shape = rect;
              geometryObj2.Texture = texture;
              geometryObj2.Position = new ace.Vector2DF(0, 0);
          }
  
          // 多角形を図形描画クラス3にて描画する。
          {
  
              var polygon = new ace.PolygonShape();
              // 多角形を構成する頂点を追加していく。(星形になるようにする。)
              for (int i = 0; i < 10; ++i)
              {
                  ace.Vector2DF vec = new ace.Vector2DF(1, 0);
                  vec.Degree = i * 36;
                  vec.Length = (i % 2 == 0) ? 100 : 55;
                  polygon.AddVertex(vec + new ace.Vector2DF(500, 250));
  
              }
  
              // 多角形を描画する図形として設定し、合成するテクスチャも設定。
              geometryObj3.Shape = polygon;
              geometryObj3.Texture = texture;
              geometryObj3.Position = new ace.Vector2DF(0, 0);
          }
  
          // AC-Engineが進行可能かチェックする。
          while (ace.Engine.DoEvents())
          {
              // AC-Engineを更新する。
              ace.Engine.Update();
          }
  
          // AC-Engineを終了する。
          ace.Engine.Terminate();
      }
  
  }