using System; using System.Drawing; using System.Windows.Forms; namespace Test { public class MyPanel : Panel { private bool mouseDown; private Point startPoint; private Size size; private Pen p = new Pen(Color.Black, 1.0f); public MyPanel() { this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true); this.MouseDown += new MouseEventHandler(MyPanel_MouseDown); this.MouseUp += new MouseEventHandler(MyPanel_MouseUp); this.MouseMove +=new MouseEventHandler(MyPanel_MouseMove); } private Bitmap backBuffer; protected override void OnPaint(PaintEventArgs e) {if(backBuffer <bold>null) backBuffer</bold> new Bitmap(this.Width, this.Height); Graphics g = Graphics.FromImage(backBuffer); g.Clear(Color.White); if(mouseDown) g.DrawRectangle(p, new Rectangle(startPoint, size)); g.Dispose(); e.Graphics.DrawImageUnscaled(backBuffer, 0, 0); } private void MyPanel_MouseDown(object sender, MouseEventArgs e) { mouseDown = true; startPoint = new Point(e.X, e.Y); } private void MyPanel_MouseUp(object sender, MouseEventArgs e) { mouseDown = false; } private void MyPanel_MouseMove(object sender, MouseEventArgs e) { if(mouseDown) { size = new Size(e.X - startPoint.X, e.Y - startPoint.Y); this.Invalidate(); // Redessine la feneter } } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question