!!!C#のサンプルとかチュートリアルとか 永遠に工事中 !!移行する前に知っておいて欲しいC/C++の知識 !ポインタ(値渡しと参照渡しの区別がつく程度) !とにかくクラス :基本:C#では名前空間>クラス/列挙体など>変数/関数という構造にする必要があり、グローバル変数は使えず、関数も単体では存在できない。そのためクラスの習得は必至。とはいえ、定義/初期化/呼び出しだけ見ておけば当分は間に合う。 :慣れてきたら:継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト指向の基礎。 !基本的な書式の違い 配列の宣言が若干異なる点に注意。後ほとんど同じ。 *C int list[5]; //サイズ固定 *C# int[] list = new list[5]; //実体の生成時にサイズを設定 変数の宣言やステートメント(ifやswitch、forのようなもの)の書式はほぼ同じ。 他には、構造体/クラスメンバの参照に用いる演算子が統一されている。 *C++ //値の場合 Node node = new Node(); node.x = 5; //ポインタの場合 Node* node = new Node(); node->x = 5; //スコープを参照する場合 Network::Node node *C# //.,->,::の区別は必要ない Node node = new Node(); node.x = 5; !!フォームアプリケーションの基礎 :基本的な流れ:フォームアプリは基本的にフォームはデザイナ上でマウスでポチポチと概観を作り、計算部分はソースコードを直接編集する形を取る。デザイナで設置したコントロールの定義と初期化は〜.Designer内に記述される。 :基本的なコントロール:以下によく使うコントロールを示す。ついでに他の言語との名前の対比も示しておく(一部怪しいところは?付き)。 ,C#,Java(Android),機能 ,Label,TextView,文字列を表示する ,Button,Button,名前の通りボタン ,ComboBox,Spinner,クリックすると選択肢が表示されるボタン ,TextBox,TextEdit,テキストの表示と編集 ,RichTextBox,TextEdit,複数行のテキスト編集 ,PictureBox,View/SurfaceView,画像を描画するコントロール ,CheckBox,ToggleButton,クリックするとマーカーのON/OFFが切り替わるボタン ,ListBox,ListView,一列に文字や画像などを並べるコントロール !サンプル1 フォームを表示 *[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication1.zip] Program.cs ... namespace WindowsApplication1 { static class Program { /// /// アプリケーションのメイン エントリ ポイントです。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // new Form1() がフォームの生成、描画ループを自分で管理したい場合は // ここを書き換える Application.Run(new Form1()); } } } 変数やイベントを自分で追加する場合は、Form1.csのpublic partial class Form1 : Formの中に書く。 !サンプル2 ボタンとテキスト *[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication2_text_button.zip] public partial class Form1 : Form { ... private void button1_Click(object sender, EventArgs e) { //Textに文字列を設定 textBox1.Text = "Click"; } } !サンプル3 四則演算を行うもの *[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication3_calc.zip] :コード中でコントロールを管理する: *ライフサイクル **コントロールの作成 **コントロールの初期化(パラメータ設定) **コントロールの親の決定 **コントロールの子の決定 **コントロールの破棄 !サンプル4 コード中でコントロールを作成、削除する *[プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication4_selfcreate.zip] Form1.cs public partial class Form1 : Form { Button button = null; ... //初期化メソッド private void Form1_Load(object sender, EventArgs e) { button = new Button(); button.Text = "Dispose"; button.Location = new Point(50, 150); button.Size = new Size(200, 50); //フォームにbuttonを所属させる this.Controls.Add(button); //クリック時のイベントの登録 button.Click += new EventHandler(button_Click); } !!画像の描画 :画像の描画手順:画像の描画には、主にGraphicsクラスを用いて、PictureBoxのImageクラスに対して描画を行う。 :コード例: //書き込む画像をファイルから読み込み Image drawimage = new Bitmap(書きたい画像のパス); //ピクチャボックスを作成 PictureBox picturebox = new PictureBox(); //ピクチャボックスのイメージを初期化 picturebox.Image = new Bitmap(picturebox.Width,picturebox.Height); //描画を行うクラスを作成(ここで引数にしたImageに書き込んでいく) Graphics graphics = Graphics.FromImage(picturebox.Image); //画像を左上(0,0)に描画 graphics.DrawImage(drawimage,new Point(0,0)); //不要になったオブジェクトを破棄 graphics.Dispose(); //画面を更新(しないと反映されない) picturebox.Reflesh(); !サンプル5 画像の削除/読み込みと表示 [プロジェクト|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication5_picturebox.zip] !乱数の操作 :乱数の生成: *[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication6_random.zip] :乱数の種を指定して、その系列を確かめるプログラム:乱数と種に関する話はシミュレーション参照 *[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication7_randomhistory.zip] !!ネットワークシミュレーションの基礎の雛形 !ノードの作成と表示 *[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication8_node.zip] !P2Pモデルの作成 *[サンプル|http://www.morino.ce.shibaura-it.ac.jp/internal_only/program/WindowsApplication9_p2p.zip] !車車間通信モデルの作成