[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
using System.Windows.Forms;class Program{static void Main(){using (Form form = new Form()){Application.Run(form);}}}
実行結果は一見上の例と同じです。class Program{static void Main(){using (Game game = new Game()){game.Run();}}}class Game : System.Windows.Forms.Form{protected override void OnPaint(System.Windows.Forms.PaintEventArgs e){base.OnPaint(e);Draw();Invalidate();}protected virtual void Draw(){//draw 3DCG}public void Run(){System.Windows.Forms.Application.Run(this);}}
この方法の良いところは、Paintイベントがなんども実行されるなんてことが無くなっているというところです。class Program{static void Main(){using (Game game = new Game()){game.Run();}}}class Game : System.Windows.Forms.Form{public void Run(){this.Show();while (Created){Draw();System.Windows.Forms.Application.DoEvents();}}protected virtual void Draw(){//draw 3DCG}}
この方法は他の方法と比べてややこしいですが、class Program{static void Main(){using (Game game = new Game()){game.Run();}}}struct Message{public System.IntPtr hWnd;public uint msg;public System.IntPtr wParam;public System.IntPtr lParam;public uint time;public System.Drawing.Point pt;}class Win32Api{[System.Security.SuppressUnmanagedCodeSecurity] //for performance[System.Runtime.InteropServices.DllImport("user32.dll")]public static extern bool PeekMessage(out Message msg,System.IntPtr hWnd,uint messageFilterMin,uint messageFilterMax,uint flags);}class Game : System.Windows.Forms.Form{bool AppStillIdle{get{Message msg;return !Win32Api.PeekMessage(out msg, System.IntPtr.Zero, 0, 0, 0);}}public void Run(){System.Windows.Forms.Application.Idle += delegate{while (AppStillIdle){Draw();}};System.Windows.Forms.Application.Run(this);}protected virtual void Draw(){//draw 3DCG}}
public sealed class MessagePump
public static void Run(Form form, MainLoop mainLoop);
public delegate void MainLoop();
class Program{static void Main(){using (Game game = new Game()){game.Run();}}}class Game : System.Windows.Forms.Form{public void Run(){SlimDX.Windows.MessagePump.Run(this, Draw);}protected virtual void Draw(){//draw 3DCG}}