Mono メモ2017年12月20日 | |
はじめにMono による C#/GUI プログラミングのメモ。 セットアップUbuntu 16.04 でのセットアップ。ここ を参考にする。 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF $ echo "deb http://download.mono-project.com/repo/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/mono-official.list $ sudo apt-get update $ sudo apt-get install mono-devel $ sudo apt-get install monodevelop MonoDevelop の起動。 $ monodevelop 起動すれば OK。 ウインドウウインドウを表示する。MonoDevelop を起動する。メニュー [ファイル]-[新規]-[ソリューション...] で [その他]-[.NET]-[空のプロジェクト] を選ぶ。[プロジェクト名] を "window" にする。[位置] でディレクトリの作成位置を指定。[作成] を押すと、指定位置に "window" というディレクトリができる。 ツリーには「ソリューション」に「プロジェクト」が1つある状態になっている。プロジェクトのアイコン (ツリーの子のほう) を右クリックして [追加]-[新しいファイル] で [空のクラス] を選び、"Program" という名前で [作成] を押す。 プログラムを以下のように書き換える。 using System; namespace window { public class Program { [STAThread] private static void Main(string[] args) { } } } プロジェクトのアイコンを右クリックし [windows をビルド] を選ぶ (あるいは F7 を押す)。エラーが出なければ OK。 同様にして "Window" というクラスを追加。 ツリーの "参照" を右クリックし、[参照アセンブリの編集] を選択。"System"、"System.Windows.Forms" にチェックを入れて [OK]。 また、プロジェクトのアイコン右クリックし [オプション] を選び、[ビルド]-[一般] の [コード生成]-[コンパイルのターゲット] を "GUI実行可能ファイル" に変更する (こうしないと Windows で起動したときにコマンドプロンプトが表示される)。 コードを以下のようにする。 Window.cs using System; using System.Windows.Forms; namespace window { public class Window : Form { public Window () { } } } Programs.cs using System; using System.Windows.Forms; namespace window { public class Program { [STAThread] private static void Main(string[] args) { Application.Run(new Window()); } } } 実行 (F5) してウインドウが表示されれば OK。 タイトルの設定、サイズの指定this.Text = "Window"; this.Width = 640; this.Height = 480; ウインドウを画面中央に表示this.StartPosition = FormStartPosition.CenterScreen; マウスマウスイベントを扱う。 新規で "mouse" ソリューションを作成。プロジェクトに "window" の 2 つのファイルを追加する (Copy を選ぶ)。namespace を "mouse" に変更する。 ツリーの "参照" を右クリックし、[参照アセンブリの編集] を選択。"System"、"System.Windows.Forms"、"System.Drawing" にチェックを入れる。 Window.cs using System; using System.Windows.Forms; using System.Drawing; namespace mouse { public class Window : Form { Label label1; Label label2; Label label3; public Window () { this.Text = "mouse"; this.Width = 640; this.Height = 480; this.StartPosition = FormStartPosition.CenterScreen; this.label1 = new Label (); this.label1.Parent = this; this.label1.Location = new Point(0, 0); this.label1.AutoSize = true; this.label1.Text = "Point:"; this.label2 = new Label (); this.label2.Parent = this; this.label2.Location = new Point(0, 15); this.label2.AutoSize = true; this.label2.Text = "Button:"; this.label3 = new Label (); this.label3.Parent = this; this.label3.Location = new Point(0, 30); this.label3.AutoSize = true; this.label3.Text = "Wheel:"; this.MouseMove += new MouseEventHandler(this.mouseMove); this.MouseDown += new MouseEventHandler(this.mouseDown); this.MouseUp += new MouseEventHandler(this.mouseUp); this.MouseWheel += new MouseEventHandler(this.mouseWheel); } void mouseMove(object sender, MouseEventArgs e) { this.label1.Text = String.Format("Point: ({0}, {1})", e.X, e.Y); this.label3.Text = "Wheel:"; } void mouseDown(object sender, MouseEventArgs e) { string eventString = null; switch (e.Button) { case MouseButtons.Left: eventString = "Left"; break; case MouseButtons.Right: eventString = "Right"; break; case MouseButtons.Middle: eventString = "Middle"; break; case MouseButtons.None: default: break; } this.label2.Text = "Button: " + eventString; this.label3.Text = "Wheel:"; } void mouseUp(object sender, MouseEventArgs e) { this.label2.Text = "Button:"; } void mouseWheel(object sender, MouseEventArgs e) { this.label3.Text = String.Format ("Wheel: {0}", e.Delta); } } } マウスイベントに対してメソッドを登録して、ラベルに情報を表示している。 | |
PENGUINITIS |