イントロダクション
・グラフィックスやポインティングディバイス(マウス、タッチ)を用いるプログラムを開発するには、Unity等の開発ツールを用いると便利 ・しかし、Windowsの場合、OSが提供するプログラミングインタフェース(API)を直接用いることでプログラミングの自由度が上げられる ・そこで、この演習ではC#からGDI+というWindowsが提供するAPIを用いて、フォームアプロケーションとして開発しよう ・GDI+の利用により、グラフィックスやポインティングディバイスやサウンドなどを用いるゲームを開発しよう
フォームアプリケーションの作成と確認
・VSで「新しいプロジェクト」「C#」「Windowsフォームアプリケーション(.NET)」 ・作成するとフォームデザイナ画面になり、この上でフォームパーツを配置することができるが、プログラム側で定義・配置する方が 精度が上がる ・そのためのソース「Program.cs」を右クリックして「コードの表示」
p.421 Windowsフォームプログラミング
・上記で自動作成されたソース「Program.cs」には不用なusing指定や、任意(必須ではない)記述が含まれている ・そこで、p.422「mostsimple.cs」を参考にして、必要なソースに絞って用いよう
作成例
using System; //フォームアプリケーションに必須
using System.Windows.Forms; //フォームアプリケーションに必須
class Program : Form { //Formクラスを継承
static void Main() { //publicの指定は任意
Application.Run(new Program()); //継承したフォームを生成して画面に出す
}
}
プログラムの説明
・Windowsフォームアプリケーション(.NET)は、C#/.NETが提供するSystem.Windows.Forms.Formクラスのオブジェクトによって 自前のウィンドウを生成して用いる ・これを、Formクラスを継承した派生クラスで行うことが可能 ・派生クラスで行えば、各種の記述を追加できるので、こちらの方が自由度が高い ・継承により、Formクラスが持っている最小化・最大化・閉じるの3ボタンの機能や、マウスによるサイズ変更などの機能が引き継がれる ・フォームの生成は、Formクラスまたはその派生クラスのオブジェクトをnewすればOK ・このオブジェクトを、C#/.NETが提供するSystem.Windows.Forms.Applicationクラスの静的メソッドRunに引数として渡すと、 画面に表示してくれる
テキスト p.422 補足
・「前準備」として参照設定の追加が記述されているが、Visual Studio 2019以降では不要
テーマ1 フォームサイズの指定
・System.Windows.Forms.Formクラスには、Controlクラスから継承したWidthプロパティがある ・これに整数値(int)を与えると、フォームの幅に設定される ・同様に、Heightプロパティがある、整数値(int)を与えると、フォームの高さに設定される ・ただし、実際には全体の大きさになり、内側の領域の大きさにするには余裕を取って行うこと ・プロパティへの代入はオブジェクトの生成後で、Runメソッドによる表示の前に行うこと ・よって「Application.Run(new Program());」を分割する必要がある
演習1 フォームサイズの指定
・領域を640×480にしたいので、フォームサイズを660×520にしよう
作成例
//演習1 フォームサイズの指定
using System; //フォームアプリケーションに必須
using System.Windows.Forms; //フォームアプリケーションに必須
class Program : Form { //Formクラスを継承
static void Main() { //publicの指定は任意
Program p = new Program(); //継承したフォームのインスタンスを生成
p.Width = 660; //インスタンスのWidthプロパティに幅を代入
p.Height = 520; //インスタンスのHeightプロパティに高さを代入
Application.Run(p); //インスタンスを画面に出す
}
}
補足:幅と高さをSizeとしてまとめて扱う
・System.Drawing.Sizeクラスのコンストラクタに、幅と高さを渡すとサイズ情報オブジェクトを生成してくれる ・これを、FormオブジェクトのSizeプロパティに渡すことで、幅と高さをまとめて扱える 例: Program p = new Program(); //継承したフォームのインスタンスを生成 p.Size = new System.Drawing.Size(660, 520); //インスタンスのSizeプロパティにSizeオブジェトを代入 Application.Run(p); //インスタンスを画面に出す ・フォームアプリケーションのクラスでは「using System.Drawing;」を指定することが多いので、指定すると下記のようになる。 p.Size = new Size(660, 520); //インスタンスのSizeプロパティにSizeオブジェトを代入 ・この書き方は、各種の描画オブジェクトに対して、予めサイズを用意しておきたい場合などに便利
テーマ2 フォーム名の指定
・System.Windows.Forms.Formクラスには、フォーム名を持つTextプロパティがある ・これを設定すると、見かけ上のアプリ名になる
提出:演習2 フォーム名の指定
・フォーム名を「Game」にしよう ・ソースファイル「Program.cs」をZIP圧縮して送信してください