/// <summary> /// <paramref name="rect"/>の角を丸めた<see cref="asd.Shape"/>を返します。 /// </summary> /// <param name="cornerDivision">1つの角を何分割するかを指定します</param> /// <param name="radius">角丸の半径を、左上、右上、右下、左下の順に指定します。</param> public static asd.Shape CreateRoundedRectangle(asd.RectF rect, uint cornerDivision, params uint[] radius) { var shape = new asd.PolygonShape(); if (radius.Length != 4) { throw new ArgumentException("4 radius values required"); } for (int i = 0; i < 4; i++) { if (radius[i] == 0) { shape.AddVertex(rect.Vertexes[i]); } else { // 半径の分だけ中心方向に寄せる var r = radius[i]; var x = 1 - ((i & 0b01) ^ ((i & 0b10) >> 1)) * 2; // 0, 3 のとき 1、 1, 2 のとき -1 var y = 1 - (i & 0b10); // 0, 1 のとき 1、 2, 3 のとき -1 var center = rect.Vertexes[i] + r * new asd.Vector2DF(x, y); for (int c = 0; c < cornerDivision; c++) { var offset = new asd.Vector2DF(r, 0.0f); offset.Degree = (180.0f + 90.0f * i) + c * 90.0f / cornerDivision; shape.AddVertex(center + offset); } } } return(shape); }
public void Run() { // Altseedを初期化する。 asd.Engine.Initialize("GeometryObject2D_PolygonShape_Textured", 640, 480, new asd.EngineOption()); // テクスチャとして図形に合成する画像を読み込む。 var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png"); // 図形描画オブジェクトのインスタンスを生成する。 var geometryObj = new asd.GeometryObject2D(); // 図形描画オブジェクトのインスタンスをエンジンに追加する。 asd.Engine.AddObject2D(geometryObj); // 多角形の図形クラスのインスタンスを生成する。 var polygon = new asd.PolygonShape(); // 多角形を構成する頂点を追加していく。(星形になるようにする。) for (int i = 0; i < 10; i++) { asd.Vector2DF vec = new asd.Vector2DF(1, 0); vec.Degree = i * 36; if (i % 2 == 0) { vec.Length = 200; } else { vec.Length = 75; } polygon.AddVertex(vec + new asd.Vector2DF(320, 240)); } // 多角形を描画する図形として設定し、合成するテクスチャも設定する。 geometryObj.Shape = polygon; geometryObj.Texture = texture; // Altseedのウインドウが閉じられていないか確認する。 while (asd.Engine.DoEvents()) { // Altseedを更新する。 asd.Engine.Update(); Recorder.TakeScreenShot("GeometryObject2D_PolygonShape_Textured", 30); } // Altseedを終了する。 asd.Engine.Terminate(); }
public void Run() { // Altseedを初期化する。 asd.Engine.Initialize("GeometryObject2D_PolygonShape", 640, 480, new asd.EngineOption()); // 図形描画オブジェクトのインスタンスを生成する。 var geometryObj = new asd.GeometryObject2D(); // 図形描画オブジェクトのインスタンスをエンジンに追加する。 asd.Engine.AddObject2D(geometryObj); // 多角形の図形クラスのインスタンスを生成する。 var polygon = new asd.PolygonShape(); // 多角形を構成する頂点を追加していく。(星形になるようにする。) for (int i = 0; i < 10; i++) { asd.Vector2DF vec = new asd.Vector2DF(1, 0); vec.Degree = i * 36; if (i % 2 == 0) { vec.Length = 200; } else { vec.Length = 75; } polygon.AddVertex(vec + new asd.Vector2DF(320, 240)); } // 多角形を描画する図形として設定する。 geometryObj.Shape = polygon; // Altseedのウインドウが閉じられていないか確認する。 while (asd.Engine.DoEvents()) { // Altseedを更新する。 asd.Engine.Update(); Recorder.TakeScreenShot("GeometryObject2D_PolygonShape", 30); } // Altseedの終了処理をする。 asd.Engine.Terminate(); }
public void Run() { // Altseedを初期化する。 asd.Engine.Initialize("GeometryObject2D_PolygonShape_Textured", 640, 480, new asd.EngineOption()); // テクスチャとして図形に合成する画像を読み込む。 var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png"); // 図形描画オブジェクトのインスタンスを生成する。 var geometryObj = new asd.GeometryObject2D(); // 図形描画オブジェクトのインスタンスをエンジンに追加する。 asd.Engine.AddObject2D(geometryObj); // 多角形の図形クラスのインスタンスを生成する。 var polygon = new asd.PolygonShape(); // 多角形を構成する頂点を追加していく。(星形になるようにする。) for (int i = 0; i < 10; ++i) { asd.Vector2DF vec = new asd.Vector2DF(1, 0); vec.Degree = i * 36; vec.Length = (i % 2 == 0) ? 200 : 75; polygon.AddVertex(vec + new asd.Vector2DF(320, 240)); } // 多角形を描画する図形として設定し、合成するテクスチャも設定する。 geometryObj.Shape = polygon; geometryObj.Texture = texture; // Altseedのウインドウが閉じられていないか確認する。 while (asd.Engine.DoEvents()) { // Altseedを更新する。 asd.Engine.Update(); Recorder.TakeScreenShot("GeometryObject2D_PolygonShape_Textured", 30); } // Altseedを終了する。 asd.Engine.Terminate(); }
public void Run() { // Altseedを初期化する。 asd.Engine.Initialize("GeometryObject2D_PolygonShape", 640, 480, new asd.EngineOption()); // 図形描画オブジェクトのインスタンスを生成する。 var geometryObj = new asd.GeometryObject2D(); // 図形描画オブジェクトのインスタンスをエンジンに追加する。 asd.Engine.AddObject2D(geometryObj); // 多角形の図形クラスのインスタンスを生成する。 var polygon = new asd.PolygonShape(); // 多角形を構成する頂点を追加していく。(星形になるようにする。) for (int i = 0; i < 10; ++i) { asd.Vector2DF vec = new asd.Vector2DF(1, 0); vec.Degree = i * 36; vec.Length = (i % 2 == 0) ? 200 : 75; polygon.AddVertex(vec + new asd.Vector2DF(320, 240)); } // 多角形を描画する図形として設定する。 geometryObj.Shape = polygon; // Altseedのウインドウが閉じられていないか確認する。 while (asd.Engine.DoEvents()) { // Altseedを更新する。 asd.Engine.Update(); Recorder.TakeScreenShot("GeometryObject2D_PolygonShape", 30); } // Altseedの終了処理をする。 asd.Engine.Terminate(); }
protected override void OnStart() { var scene = new asd.Scene(); var layer = new asd.Layer2D(); var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png"); var geometryObj1 = new asd.GeometryObject2D(); var geometryObj2 = new asd.GeometryObject2D(); var geometryObj3 = new asd.GeometryObject2D(); var geometryObj4 = new asd.GeometryObject2D(); var geometryObj5 = new asd.GeometryObject2D(); var geometryObj6 = new asd.GeometryObject2D(); layer.AddObject(geometryObj1); layer.AddObject(geometryObj2); layer.AddObject(geometryObj3); layer.AddObject(geometryObj4); layer.AddObject(geometryObj5); layer.AddObject(geometryObj6); scene.AddLayer(layer); asd.Engine.ChangeScene(scene); { var circle = new asd.CircleShape(); circle.OuterDiameter = 100.0f; circle.InnerDiameter = 10.0f; circle.NumberOfCorners = 96; circle.Position = new asd.Vector2DF(100, 50); geometryObj1.Shape = circle; geometryObj1.Texture = texture; geometryObj1.Position = new asd.Vector2DF(0, 0); } { var arc = new asd.ArcShape(); arc.OuterDiameter = 100; arc.InnerDiameter = 10; arc.NumberOfCorners = 96; arc.Position = new asd.Vector2DF(300, 50); arc.StartingCorner = 90; arc.EndingCorner = 5; geometryObj2.Shape = arc; geometryObj2.Texture = texture; geometryObj2.Position = new asd.Vector2DF(0, 0); } { var line = new asd.LineShape(); line.StartingPosition = new asd.Vector2DF(410, 50); line.EndingPosition = new asd.Vector2DF(630, 50); line.Thickness = 5.0f; geometryObj3.Shape = line; geometryObj3.Position = new asd.Vector2DF(0, 0); } { var rect = new asd.RectangleShape(); rect.DrawingArea = new asd.RectF(10, 110, 300, 200); rect.UV = new asd.RectF(0.0f, 0.0f, 0.5f, 0.5f); geometryObj4.Shape = rect; geometryObj4.Texture = texture; geometryObj4.Position = new asd.Vector2DF(0, 0); } { var triangle = new asd.TriangleShape(); triangle.SetPointByIndex(new asd.Vector2DF(320, 350), 0); triangle.SetPointByIndex(new asd.Vector2DF(100, 450), 1); triangle.SetPointByIndex(new asd.Vector2DF(540, 450), 2); triangle.SetUVByIndex(new asd.Vector2DF(0.5f, 0.2f), 0); triangle.SetUVByIndex(new asd.Vector2DF(0.1f, 0.5f), 1); triangle.SetUVByIndex(new asd.Vector2DF(0.9f, 0.7f), 2); geometryObj5.Shape = triangle; geometryObj5.Texture = texture; geometryObj5.Position = new asd.Vector2DF(0, 0); } { var polygon = new asd.PolygonShape(); for (int i = 0; i < 10; ++i) { asd.Vector2DF vec = new asd.Vector2DF(1, 0); vec.Degree = i * 36; vec.Length = (i % 2 == 0) ? 100 : 55; polygon.AddVertex(vec + new asd.Vector2DF(500, 250)); } geometryObj6.Shape = polygon; geometryObj6.Texture = texture; geometryObj6.Position = new asd.Vector2DF(0, 0); } }