Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > .NET FAQ > Динамически изменяющееся выделение pictureBox'a |
Автор: dammian 28.04.07, 20:04 |
Проблема в следующем. Есть pictureBox с картинкой, нужно чтобы при движении по нему мышкой рисовался прямоугольник, изменяющийся в зависимости от положения курсора. Но на битмапе не отрожался. Буду признателен за любые идеи. |
Автор: TohaSan 28.04.07, 20:04 |
Я это, правда, уже писал в какой-то теме.. пробуй <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> public partial class Form2 : Form { public Form2() { InitializeComponent(); this.pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint); this.pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown); this.pictureBox1.MouseMove += new MouseEventHandler(pictureBox1_MouseMove); this.pictureBox1.MouseUp += new MouseEventHandler(pictureBox1_MouseUp); } private int X0, Y0, curX, curY; private bool fMouseDown; private void pictureBox1_Paint(object sender, PaintEventArgs e) { if (fMouseDown) { if (X0 <= curX) { if (Y0 <= curY) { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(X0, Y0, curX - X0, curY - Y0)); } else { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(X0, curY, curX - X0, Y0 - curY)); } } else { if (Y0 <= curY) { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(curX, Y0, X0 - curX, curY - Y0)); } else { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(curX, curY, X0 - curX, Y0 - curY)); } } } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { fMouseDown = true; X0 = e.X; Y0 = e.Y; } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (fMouseDown) { curX = e.X; curY = e.Y; this.pictureBox1.Refresh(); } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { fMouseDown = false; } } |