2011-12-17 6 views
-2

私は、目として2つの円とそれに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イベントハンドラ。

関連する問題