C#でツールを作る その13 -メニューからモデルを開く-


サンプル

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 );
    }