C#でツールを作る その13 -メニューからモデルを開く-
サンプル
- tool13.zip
- VC#2008EE用
OpenFileDialog
- ツールボックスから「OpenFileDialog」を追加
- ダイアログを表示する
- openFileDialog1.ShowDialog()
- OKボタン(開く)を押したときの処理はイベントで追加可能
- openFileDialog1.FileOk
- とりあえずモデルファイルとテクスチャは同じディレクトリ内に
Form1.cs
public partial class Form1 : Form { private Hoge hoge = null; public Form1( UserControl1 view, Hoge hoge ) { InitializeComponent(); splitContainer1.Panel1.Controls.Add( view ); openFileDialog1.FileOk += new CancelEventHandler( hoge.openFileDialog1_FileOk ); this.hoge = hoge; } private void openToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); } }
Hoge.cs(アプリケーションクラス)
- ロードしたモデルはモデルリストに追加
private List< Model > model_list = new List<Model>(); public void openFileDialog1_FileOk(object sender, CancelEventArgs e) { OpenFileDialog dialog = ( OpenFileDialog )sender; String filename = Path.GetFileName( dialog.FileName ); String dirname = Path.GetDirectoryName( dialog.FileName ); Model model = Model.FromFile( device, dirname, filename ); if( model != null ) model_list.Add( model ); else MessageBox.Show( "ロードできませんでした" ); view.Refresh(); } private void ReleaseDeviceObject( object sender, EventArgs e ) { foreach ( Model model in model_list ) { model.Dispose(); } model_list.Clear(); /*...*/ }
//モデルの描画 foreach( Model model in model_list ) { device.Transform.World = Matrix.Identity; model.Render( device ); }