1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace shape_app { public partial class Form1 : Form { Rectangle r; //Paintイベント用 int count = 0; public Form1() { InitializeComponent(); r = new Rectangle(100, 100, 100, 100); //ブルブル用 this.timer1.Start(); } private void cloneToolStripMenuItem_Click(object sender, EventArgs e) { //メニューのクリックでシェイプの追加(ユーザコントロール) Shape s = new Shape(); s.Width = 100; s.Height = 100; this.Controls.Add(s); } private void Form1_MouseMove(object sender, MouseEventArgs e) { //マウスの座標を表示 this.label1.Text = "X:" + e.Location.X.ToString() + " Y:" + e.Location.Y.ToString(); } private void timer1_Tick(object sender, EventArgs e) { //シェイプをブルブルさせる if(this.shape1.Left < 100) { this.shape1.Left += 1; } else { this.shape1.Left -= 1; } } private void Form1_Paint(object sender, PaintEventArgs e) { /* FormのPaintイベント。何もしないと発動しないが、コントロールの移動など 再描画の度に発動している。 */ System.Diagnostics.Debug.Print((count++).ToString()); /* 以下の長方形も実際はイベント毎に再描画している。 サンプルなどではPaintイベントのeからGraphicsプロパティを取得する例がある。 */ Pen p1 = new Pen(Color.Red); e.Graphics.DrawRectangle(p1, new Rectangle(50, 50, 100, 10)); //この長方形はマウスクリックが内外どちらか判定できる。 Pen p2 = new Pen(Color.Blue); e.Graphics.DrawRectangle(p2, r); } private void Form1_MouseDown(object sender, MouseEventArgs e) { Point clickPoint = new Point(e.X, e.Y); if (r.Contains(clickPoint)) { MessageBox.Show("内 です。"); } else { MessageBox.Show("外 です。"); } } } } |