// ビットマップパネルコンポーネントの作成 // // 2002/ 6/16 宍戸 輝光 using System; using System.Drawing; using System.Windows.Forms; class BPanel:Control { // ビットマップパネル private Bitmap bmp; public BPanel() { Width=130; Height=130; bmp=new Bitmap(128,128); Graphics.FromImage(bmp).Clear(Color.White); } protected override void OnMouseDown(MouseEventArgs e) { // 親クラスのOnMouseDown()を呼び出す base.OnMouseDown(e); // 以下で独自の処理を追加 // bmpの範囲外なら戻る if (e.X<1 || e.X>128 || e.Y<1 || e.Y>128) return; // 黒点を打つ bmp.SetPixel(e.X-1,e.Y-1,Color.Black); // コンポーネントを再描画 Refresh(); } protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawRectangle(new Pen(Color.Black,1),0,0,129,129); e.Graphics.DrawImage(bmp,1,1); } } public class test:Form { private BPanel bp; test() { // コンストラクタ // ビットマップパネルのインスタンス生成 bp=new BPanel(); ClientSize=new Size(130,130); // bpを自分(フォーム)に追加 Controls.Add(bp); } public static void Main() { // フォーム生成 test app=new test(); // イベントループに入る Application.Run(app); } }