2011-12-17 33 views
-2

我創建了兩個圓圈,分別爲眼睛和兩個眼球。我想用光標移動來移動這些眼球。我該怎麼辦? 請幫助!我如何使光標移動後的眼球?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace nighat_google 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     SolidBrush s=new SolidBrush(Color.Black); 
     e.Graphics.DrawEllipse(Pens.Red, 50, 50, 100, 100); 
     e.Graphics.DrawEllipse(Pens.Red, 170, 50, 100, 100); 
     e.Graphics.FillEllipse(s, 90, 50, 20, 20); 
     e.Graphics.FillEllipse(s, 210, 50, 20, 20); 

    } 
} 
} 

回答

7

沒有人會爲你編寫代碼,所以讓我們從邏輯上考慮問題。

問題是更新UI以響應鼠標光標的移動。

因此,解決方案的關鍵是找出一種方法來跟蹤鼠標光標的移動。

.NET Framework已經提供了一個事件,告訴你鼠標何時移動。它巧妙地被稱爲MouseMove。您可以通過閱讀文檔或在Visual Studio環境中搜索事件列表來找到自己的。

因此,所有你需要做的是處理MouseMove事件,取消你的眼球(使用Invalidate method),並與Paint事件處理程序內的正確位置重繪他們(如你所示的代碼完成)。


您的下一個問題可能是如何知道面向哪個方向繪製眼球?那麼,因爲您希望他們查看鼠標光標,您需要確定鼠標光標位於您的Paint事件處理程序的內部。

有該方法,太:Cursor.Position

它返回一個Point表示光標在屏幕座標位置。屏幕座標正是你想要的,因爲它們會告訴你鼠標光標在屏幕上的哪個區域。將屏幕劃分成與你的眼球區域相對應的區域,然後編寫代碼以匹配你的眼睛的區域Paint事件處理器。