2008-12-12 1 views
3

Представьте, что я использую графические классы .NET для рисования прямоугольника.Как назначить обработчик события клика части рисованного прямоугольника?

Как я могу назначить событие так, чтобы, если пользователь нажимает на определенную точку или определенный диапазон точек, что-то происходит (обработчик события щелчка)?

Я читал CLR через C# и раздел событий, и я подумал об этом сценарии из того, что я прочитал.

Пример кода этого действительно улучшит мое понимание событий в C# /. NET.

Благодаря

ответ

0

PointToClient метод переводит координаты курсора в управляющие относительные координаты. То есть если курсор находится на (screenX, screenY) позиции на экране, он может находиться в позиции (formX, formY) относительно верхнего левого угла формы. Нам нужно вызвать его, чтобы вывести позицию курсора в систему координат, используемую нашим прямоугольником.

Invalidate метод делает управление, чтобы перерисовать себя. В нашем случае он запускает обработчик события OnPaint, чтобы перерисовать прямоугольник с новым цветом границы.

5

Вы можете назначить обработчик события Click для управления поверхность которого будет использоваться для рисования прямоугольника. Вот небольшой пример: Когда вы нажимаете на форму внутри прямоугольника, она будет нарисована красной рамкой, когда вы нажмете на нее, она будет нарисована черной рамкой.

public partial class Form1 : Form 
{ 
    private Rectangle rect; 
    private Pen pen = Pens.Black; 

    public Form1() 
    { 
     InitializeComponent(); 
     rect = new Rectangle(10, 10, Width - 30, Height - 60); 
     Click += Form1_Click; 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 
     e.Graphics.DrawRectangle(pen, rect); 
    } 

    void Form1_Click(object sender, EventArgs e) 
    { 
     Point cursorPos = this.PointToClient(Cursor.Position); 
     if (rect.Contains(cursorPos)) 
     { 
      pen = Pens.Red; 
     } 
     else 
     { 
      pen = Pens.Black; 
     } 
     Invalidate(); 
    } 
} 
Смежные вопросы