矩形や円の描画、文字の描画、画面遷移 など
テーマ17 矩形の描画
・矩形(四角形)は、DrawRectangleメソッドにペン、左上X座標、左上Y座標、幅、高さを指定すると描画できる
演習14 判定エリアの描画
・赤色、太さ2で矩形の判定エリアを描画しよう ・開始座標は(78, 411)、幅は485、高さは64とする
作成例
//演習14 判定エリアの描画
using System; //フォームアプリケーションに必須
using System.Windows.Forms; //フォームアプリケーションに必須
using System.Drawing; //Image用
class Program : Form { //Formクラスを継承
Image backb = Image.FromFile("backb.bmp"); //背景画像の読込
Image enemy = Image.FromFile("enemy.gif"); //アイテム画像の読込
Image burn = Image.FromFile("burn.gif"); //効果用画像の読込
Pen mypen = new Pen(Color.Red, 2); //【変更】ペンを生成(初期値は赤、2)
protected override void OnPaint(PaintEventArgs e) { //Formのメソッドをオーバーライド
base.OnPaint(e); //まず、Formクラスにおけるメソッドの内容(基本再描画処理)を実行
e.Graphics.DrawImage(backb, 0, 0); //背景画像を(0,0)から描画
//e.Graphics.DrawLine(mypen, 0, 0, backb.Width - 1, backb.Height - 1); //【削除】左上から右下へ赤色10の線を描画
//mypen.Color = Color.Yellow; //【削除】ペン色を黄色に
//mypen.Width = 20; //【削除】ペン幅を20に
//e.Graphics.DrawLine(mypen, backb.Width - 1, 0, 0, backb.Height - 1); //【削除】左上から右下へ黄色20の線を描画
e.Graphics.DrawRectangle(mypen, 78, 411, 485, 64); //【追加】判定エリアの描画
int mx = backb.Width / 2, my = backb.Height / 2; //中央座標を得る
e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //アイテム画像を中央に描画
e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //アイテム画像を中央に描画
}
void OnKeyDown(object o, KeyEventArgs e) { //キーボードが押された時に呼ばれるメソッド
if(e.KeyCode.ToString() == "Escape") { //Escキーが押されたら
Close(); //フォームアプリケーション終了
}
}
Program() { //コンストラクタ
KeyDown += new KeyEventHandler(OnKeyDown); //キーボードが押された時に呼ばれるメソッドを登録
}
static void Main() { //publicの指定は任意
Program p = new Program(); //継承したフォームのインスタンスを生成
p.Width = 660; //インスタンスのWidthプロパティに幅を代入
p.Height = 520; //インスタンスのHeightプロパティに高さを代入
p.Text = "Game"; //インスタンスのTextプロパティにフォーム名を代入
p.ControlBox = false; //ControlBoxを非表示にする
p.FormBorderStyle = FormBorderStyle.Fixed3D; //フォームサイズ変更を禁止
Application.Run(p); //インスタンスを画面に出す
}
}
テーマ18 円や楕円の描画
・円または楕円は、DrawEllipseメソッドにペン、左上X座標、左上Y座標、幅、高さを指定すると描画できる ・これは矩形を想定してその中に内接する楕円を描くイメージになる ・よって、幅と高さを同じ値にすれば円になり、その値が直径になる
演習15 同心円の描画
・領域の中央に、黄色い幅10のペンで、半径15の円を描こう ・その外側に、同じペンで半径30、45、60の円を描くことで同心円にしょう ・ヒント: すでに得ている中央座標(mx, my)を用いて、下記をi = 1から4までについて繰返すと良い 左上X座標 = mx - 15 * i、左上Y座標 = my - 15 * i、幅 = 30 * i、高さ = 30 * i で円を描く
提出:演習15