2008-12-12 28 views
3

想象一下,我使用.NET圖形類來繪製一個矩形。如何將點擊事件處理程序分配給繪製的矩形的一部分?

我怎麼能分配一個事件,以便如果用戶點擊某個點或某個點範圍,會發生什麼事情(點擊事件處理程序)?

我正在通過C#和事件部分閱讀CLR,我從我讀過的內容中想到了這個場景。

這樣的代碼示例將真正提高我對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(); 
    } 
} 
相關問題