初渉C Sharp
C Sharp or C#、マイクロソフト社の製品です.正確にはプログラミング言語です.C、C++、Javaの3つの言語と似ています.Javaと比較すると、いくつかの方法ではそっくりだと言えます.今日は簡単にCsharpを理解して、絵板のプログラムを書きました.直線、楕円、矩形を描くことができ、色を選択することもでき、再描画も実現しました.
いくつかのコアコード:
1.キャンバスオブジェクトを取得する
2、色
C Sharpには色を表すColorクラスがありますが、色を変えるにはPenクラスが必要です.
色選択のためのボタンを定義します
ボタンイベントリスナーを追加するコードは、次のとおりです.
3、マウスリスナーの追加方法
リスナーをさらに具体的に実現する方法.
4、最後に再描画する方法
C sharpには対応する再描画方法があり、OnPaint(PaintEventArgs e)
メソッドを書き換えるときは、メソッドの前にoverrideを追加します.
また,C Sharpのキューでは,Listは汎用型を用いることができるが,ArrayListはだめのようで,これはまだ検討されている.
いくつかのコアコード:
1.キャンバスオブジェクトを取得する
// ¨
private System.Drawing.Graphics g ;
g = this.panel1.CreateGraphics();
2、色
C Sharpには色を表すColorクラスがありますが、色を変えるにはPenクラスが必要です.
色選択のためのボタンを定義します
private static Color color = Color.Black;
private System.Drawing.Pen p = new System.Drawing.Pen(color);
//
public void button4_Click(object sender, EventArgs e)
{
System.Windows.Forms.ColorDialog cd = new ColorDialog();
cd.ShowDialog();
color = cd.Color;
p = new Pen(color);
}
ボタンイベントリスナーを追加するコードは、次のとおりです.
//
this.button4.Click += new EventHandler(button4_Click);
3、マウスリスナーの追加方法
// , 。
this.panel1.MouseDown += new MouseEventHandler(Form1_MouseDown);
this.panel1.MouseUp += new MouseEventHandler(Form1_MouseUp);
リスナーをさらに具体的に実現する方法.
//
public void Form1_MouseUp(object sender, MouseEventArgs e)
{
x2 = e.X;
y2 = e.Y;
Shape shape = new Shape();
if (s.Equals("Line"))
{
g.DrawLine(p, x1, y1, x2, y2);
shape.x1 = x1;
shape.y1 = y1;
shape.x2 = x2;
shape.y2 = y2;
shape.item = "Line";
shape.c = this.p.Color;
this.list.Add(shape);
}
else if (s.Equals("Oval"))
{
g.DrawEllipse(p, x1, y1, Math.Abs(x2-x1), Math.Abs(y2-y1));
shape.x1 = x1;
shape.y1 = y1;
shape.x2 = x2;
shape.y2 = y2;
shape.item = "Oval";
shape.c = this.p.Color;
this.list.Add(shape);
}
else if (s.Equals("Rectangle"))
{
g.DrawRectangle(p, x1, y1, Math.Abs(x2 - x1), Math.Abs(y2 - y1));
shape.x1 = x1;
shape.y1 = y1;
shape.x2 = x2;
shape.y2 = y2;
shape.item = "Rectangle";
shape.c = this.p.Color;
this.list.Add(shape);
}
}
//
public void Form1_MouseDown(object sender, MouseEventArgs e)
{
x1 = e.X;
y1 = e.Y;
}
class Shape
{
public int x1, x2, y1, y2;
public String item;
public Color c;
}
4、最後に再描画する方法
C sharpには対応する再描画方法があり、OnPaint(PaintEventArgs e)
メソッドを書き換えるときは、メソッドの前にoverrideを追加します.
//
protected override void OnPaint(PaintEventArgs e)
{
for (int i = 0; i < this.list.Count;i++ )
{
Shape shape = this.list[i];
if(shape.item.Equals("Line"))
{
Pen pen = new Pen(shape.c);
g.DrawLine(pen,shape.x1,shape.y1,shape.x2,shape.y2);
}
else if (shape.item.Equals("Oval"))
{
Pen pen = new Pen(shape.c);
g.DrawEllipse(pen, shape.x1, shape.y1, Math.Abs(shape.x2 - shape.x1), Math.Abs(shape.y2 - shape.y1));
}
else if (shape.item.Equals("Rectangle"))
{
Pen pen = new Pen(shape.c);
g.DrawRectangle(pen, shape.x1, shape.y1, Math.Abs(shape.x2 - shape.x1), Math.Abs(shape.y2 - shape.y1));
}
}
}
また,C Sharpのキューでは,Listは汎用型を用いることができるが,ArrayListはだめのようで,これはまだ検討されている.