2011-12-17 47 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事件处理器。