FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SharpDX プロパティの実行

using System;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
//使用したいプロパティがある型を取得
Type type = typeof(Test);
//TypeクラスのGetProperty関数で、
//使用するプロパティのデータを取得
System.Reflection.PropertyInfo info = type.GetProperty("Name");

//UtilitiesクラスのBuildPropertyGetter関数で、
//プロパティのget部分を実行する関数を取得
//<>内のクラスはプロパティの型と一致させる必要がある
var get = SharpDX.Utilities.BuildPropertyGetter(type, info);
//UtilitiesクラスのBuildPropertySetter関数で、
//プロパティのset部分を実行する関数を取得
//<>内のクラスはプロパティの型と一致させる必要がある
var set = SharpDX.Utilities.BuildPropertySetter(type, info);


string str = "";
Test test = new Test();

//TestクラスのNameプロパティのget部分を使用
get.Invoke(test, out str);
//TestクラスのNameプロパティのset部分を使用
set.Invoke(test, ref str);

}
}

public class Test
{
public string Name
{
get
{
Console.WriteLine("Getter テスト");
return null;
}
set
{
Console.WriteLine("Setter テスト");
}
}

}
}
スポンサーサイト

SharpDX タイマーの使用

using System;
/*
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
using System.IO;
using System.Diagnostics;
*/

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
//タイマー用オブジェクトを生成
SharpDX.TimerTick timer = new SharpDX.TimerTick();


for (int i = 0; i < 5; i++)
{
//Tick関数は
//TotalTimerプロパティを呼び出すまでの
//時間を計測する関数
timer.Tick();


SharpDX.Utilities.Sleep(TimeSpan.FromSeconds(1));

//TotalTimerプロパティで、
//Tick関数が実行されてからの経過時間を取得
//(続けて計測する場合は再度Tick関数を呼び出すこと)
Console.WriteLine(timer.TotalTime);
}
}
}
}

アプリの実行

using System;
using System.Diagnostics;

namespace Project1
{
internal static class Program
{
private static void Main()
{
//実行するファイル名
const string fileName = "test.txt";
//ファイルを起動する際に指定する引数
//不要な場合は省略可能
const string arguments = "test";

//ファイル実行用インスタンスを生成
Process process = new Process();
//StartInfoプロパティで、
//ファイル実行に必要な情報を設定
ProcessStartInfo info = process.StartInfo;

//実行するファイル名を指定(必須)
info.FileName = fileName;

//ウィンドウを表示するか
//Normalで表示
//Hiddenで非表示
info.WindowStyle = ProcessWindowStyle.Normal;

//ファイル実行の際に指定する引数
//不要な場合は省略可能
info.Arguments = arguments;

//Exitedイベントを実行するか
//falseなら実行しない、trueなら実行する
process.EnableRaisingEvents = true;
//Exitedイベントは、アプリが終了した際に呼ばれる処理
//使用するには、EnableRaisingEventsプロパティにtrueを指定している必要がある
process.Exited += (sender, e) =>
{
Console.WriteLine("アプリが終了しました");
};

//ファイルの実行
process.Start();
}
}
}

WPF Windowに描画

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
TestWindow window = new TestWindow();

window.ShowDialog();
}
}

public class TestWindow : Window
{
//OnRender関数をオーバーライドして描画処理の実装
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);

//描画処理
drawingContext.DrawRectangle(Brushes.Wheat, null, new Rect(70, 70, 100, 100));
drawingContext.DrawRectangle(Brushes.Violet, null, new Rect(40, 40, 100, 100));
drawingContext.DrawRectangle(Brushes.Blue, null, new Rect(10, 10, 100, 100));
}

//ウィンドウに直接描画するための関数
protected override Size ArrangeOverride(Size arrangeBounds)
{
//base.ArrangeOverride関数を使わないことで
//ウィンドウに直接描画可能
return new Size();
}

}
}

WPF 描画範囲の指定

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
Window window = new System.Windows.Window();
TextBlock text = new System.Windows.Controls.TextBlock();

text.FontSize = 15;
text.Text = "あいうえお\nかきくけこ\nさしすせそ";

//Clipプロパティで、描画範囲を指定
//Geometry型で、描画範囲を決められる
text.Clip = new RectangleGeometry(new Rect(0, 20, 100, 20));

window.Content = text;
window.ShowDialog();
}
}
}

WPF フォントの読み込み

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
Window window = new Window();
TextBlock text = new TextBlock();

text.FontSize = 30;
text.FontFamily = new FontFamily("MS Gothic");
text.Text = "あいうえお";

window.MouseDown += (sender, e) =>
{
//フォント名を指定
const string fontName = "test.ttf";
//PathクラスのGetFullPath関数で、フォントのあるパスを取得
//絶対パスでないとエラーがでます
string fontFilePath = System.IO.Path.GetFullPath(fontName);

//FontsクラスのGetFontFamilies関数で、フォントの読み込み
//(注) 絶対パスにしないとエラーが出ます
ICollection font = Fonts.GetFontFamilies(fontFilePath);
//上で取得したインスタンスは実は、ReadOnlyCollectionクラスのインスタンス
ReadOnlyCollection ary = font as ReadOnlyCollection;

//読み込んだフォントに変更
text.FontFamily = ary[0];

};

window.Content = text;
window.ShowDialog();
}
}
}

ToolKit Gameクラスの起動(Border or SharpDXElementクラス)

using System;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
var game = new SharpDX.Toolkit.Game();
var gdm = new SharpDX.Toolkit.GraphicsDeviceManager(game);

var window = new System.Windows.Window();
var control = new System.Windows.Controls.Border();

//WPFの場合は、子要素の配置を忘れても、
//いつも通りに終了させられます
window.Content = control;

//WPFのBorderクラスを使用して起動
//WPFのコントロールで起動に使えるのは、
//BorderクラスとSharpDXElementクラスだけです
game.Run(control);
window.ShowDialog();

}
}
}

ToolKit Gameクラスの起動(Controlクラス)

using System;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
var game = new SharpDX.Toolkit.Game();
var gdm = new SharpDX.Toolkit.GraphicsDeviceManager(game);

var window = new System.Windows.Forms.Form();
var control = new System.Windows.Forms.Control();


//(注意)必ずFormには子要素を指定しておいてください
//    場合によってはアプリが終了しなくなります
window.Controls.Add(control);

window.Show();
//WindowsフォームのFormの子要素を使用して起動
game.Run(control);

}
}
}

ToolKit Gameクラスの起動(Formクラス)

using System;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
var game = new SharpDX.Toolkit.Game();
var gdm = new SharpDX.Toolkit.GraphicsDeviceManager(game);

var window = new System.Windows.Forms.Form();

//WindowsフォームのFormインスタンスで起動
game.Run(window);

}
}
}

ウィンドウ起動時のメモリ使用量

・Windowsフォームのウィンドウ起動時のメモリ使用量
80,644

・WPFウィンドウ起動時のメモリ使用量
687,044

・SharpDXのRenderForm起動時のメモリ使用量
203,308

・SharpDXのGameウィンドウ起動時のメモリ使用量(Game.Runの引数を省略した時)
227,308

・SharpDXのGameウィンドウ起動時のメモリ使用量(Game.Runの引数に、
RenderFormクラスのインスタンスを指定した時)
227,308

・SharpDXのGameウィンドウ起動時のメモリ使用量(Game.Runの引数に、
Formクラスのインスタンスを指定した時)
111,444

・SharpDXのGameウィンドウ起動時のメモリ使用量(Game.Runの引数に、
Borderクラスのインスタンスを指定した時)
640,752

SharpDXのGameウィンドウ起動時のメモリ使用量(Game.Runの引数に、
SharpDXElementクラスのインスタンスを指定した時)
632,560
プロフィール

みにおん

Author:みにおん
c#でゲームを作る人です
web小説なども書いています

低学歴で馬鹿なのパート従業員
ですが、よろしく

相互リンク・ブロとも募集中です
コメントなどご自由にどうぞ

ホームページを見る
Twitter(個人ページ)
PIXIV(個人ページ)

○自作ゲーム一覧
ふりーむ
フリーゲーム夢幻
100%ふりげストア

・web小説
最後の時の夢

最新記事
最新コメント
月別アーカイブ
カテゴリ
ブロとも一覧
検索フォーム
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
リンク
アクセスランキング
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。