Programming_C#_sample
C#のサンプルとかチュートリアルとか
永遠に工事中
移行する前に知っておいて欲しいC/C++の知識
ポインタ(値渡しと参照渡しの区別がつく程度)
とにかくクラス
- 基本
- C#では名前空間>クラス/列挙体など>変数/関数という構造にする必要があり、グローバル変数は使えず、関数も単体では存在できない。そのためクラスの習得は必至。とはいえ、定義/初期化/呼び出しだけ見ておけば当分は間に合う。
- 慣れてきたら
- 継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト指向の基礎。
基本的な書式の違い
配列の宣言が若干異なる点に注意。後ほとんど同じ。
- C
int list[5]; //サイズ固定
int[] list = new list[5]; //実体の生成時にサイズを設定
変数の宣言やステートメント(ifやswitch、forのようなもの)の書式はほぼ同じ。
他には、構造体/クラスメンバの参照に用いる演算子が統一されている。
//値の場合 Node node = new Node(); node.x = 5; //ポインタの場合 Node* node = new Node(); node->x = 5; //スコープを参照する場合 Network::Node node
//.,->,::の区別は必要ない 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 フォームを表示
Program.cs
...
namespace WindowsApplication1
{
static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// new Form1() がフォームの生成、描画ループを自分で管理したい場合は
// ここを書き換える
Application.Run(new Form1());
}
}
}
変数やイベントを自分で追加する場合は、Form1.csのpublic partial class Form1 : Formの中に書く。
サンプル2 ボタンとテキスト
public partial class Form1 : Form
{
...
private void button1_Click(object sender, EventArgs e)
{
//Textに文字列を設定
textBox1.Text = "Click";
}
}
サンプル3 四則演算を行うもの
- コード中でコントロールを管理する
- ライフサイクル
- コントロールの作成
- コントロールの初期化(パラメータ設定)
- コントロールの親の決定
- コントロールの子の決定
- コントロールの破棄
サンプル4 コード中でコントロールを作成、削除する
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 画像の削除/読み込みと表示
乱数の操作
- 乱数の生成
- 乱数の種を指定して、その系列を確かめるプログラム
- 乱数と種に関する話はシミュレーション参照
Copyright(C) by 芝浦工業大学 工学部通信工学科, 森野研究室. All Rights Reserved.