Visual Studio C# Objeye Fareyi Takip Ettirme


Visual Studio C# Objeye Fareyi Takip Ettirme

Merhaba arkadaşlar bu gün sizlere Visual Studio da C# kullanarak nasıl herhangi bir objeye fareyi takip ettirebileceğinizden bahsedeceğim.

Bunun için 2 adet yöntem bulunmaktadır;
1. Yöntem objenin konumunu anında farenin konumuna eşitlemek.
2. Yöntem objenin konumuna eklemeler ve çıkartmalar yaparak fareye doğru yol almasını sağlamak.

Bu iki yöntem arasındaki temel fark birinde objenin ışınlanması diğerinde ise objenin yavaş yavaş yol alması.


1. Yöntem Objeyi Farenin Konumuna Işınlamak

Objeyi fareye takip ettirmek için farenin konumuna sürekli ışınlamasını sağlamak için ilk olarak projemize Timer ekliyoruz ve ardından takip ettirmek istediğimiz objeyi formumuza ekliyoruz.


Artık yapmamız gereken tek şey kaldı. Timer a tıklatıp gerekli komutları yazmak.

 private void timer1_Tick(object sender, EventArgs e)
        {
            // Fare konumunu alıyoruz
            int x = Cursor.Position.X;
            int y = Cursor.Position.Y;

            /* Objenin direkt olarak gitmesini sağlamak */

            // objenin konumunu direkt olarak farenin konumuna eşitliyoruz.
            pictureBox1.Location = new Point(x, y);

            /* Objenin direkt olarak gitmesini sağlamak */
        }


Aslında kodlarda yeterince açıklama satırı bulunuyor ama biraz daha açıklamak gerekirse anlatalım.
int x ile farenin x eksenindeki konumunu aldık bunun için Cursor.position.x komutundan faydalandık ve aynısını y fonksiyonu için yaptık.
Ardından objemizin location ile konumunu değiştirmek istediğimizi söyledik ve new point(x,y) ile farenin x ve y konumunu objemizin konumu ile eşitledik.

Komutların çalışması için Timer ın enabledinin true olduğundan emin olun.


2. Yöntem Objenin Farenin Konumuna Yol Aldırtmak

Bu yöntem objenin fareye doğru direkt olarak gitmesini değilde yavaş yavaş yol almasını sağlar.
Projemize 1. yöntemde olduğu gibi timer ve objemizi ekliyoruz.


Ardından gerekli komutları giriyoruz.

  private void timer1_Tick(object sender, EventArgs e)
        {
            // Fare konumunu alıyoruz
            int x = Cursor.Position.X;
            int y = Cursor.Position.Y;

            /* Objenin direkt olarak gitmesini sağlamak */

            // objenin konumunu direkt olarak farenin konumuna eşitliyoruz.
            pictureBox1.Location = new Point(x, y);

            /* Objenin direkt olarak gitmesini sağlamak */

            /* 2. Yöntem Objenin yavaş yavaş gitmesini sağlamak */

            // Objenin geçerli konumunu alıyoruz
            int px = pictureBox1.Location.X;
            int py = pictureBox1.Location.Y;

            // Objenin geçerli konumuna göre yavaş yavaş eklemeler ile fareye doğru ilerlemesini sağlıyoruz

            if(x > px)
            {
                
                pictureBox1.Left += 1;
            }
            else if(x < px)
            {
              
                pictureBox1.Left -= 1;
            }
            else
            {

            }

             else if(y < py)
            {
               
                pictureBox1.Top -= 1;
            }
            else
            {

            }

            /* Objenin yavaş yavaş gitmesini sağlamak */
        }

İlk olarak farenin x ve y eksenindeki konumlarını aldık ve x, y değişkenlerine atadık ardından objemizin geçerli konumunu aldık ve px , py değişkenlerine atadık.
En sonunda oluşturduğumuz if - else sistemi ile objemizin fareye doğru yol almasını sağladık.
.left += 1 ve .left -= 1 objenin sağa ve sola doğru yol almasını ve kaç birim yol alacağını belirliyor.
.top += 1 ve . top -= 1 ile objenin yukarı ve aşağı doğru yol almasını ve kaç birim yol alacağını belirliyoruz.

Kodlarınızın çalışabilmesi için Timerınızın enabledinin true olduğunu ve intervalinin en iyi sonuç için oldukça düşük bir sayı olduğundan emin olun.


Projeyi benim yaptığım haline bakmak isterseniz GitHub üzerinden indirebilirsiniz.
GitHub - Objeye Fareyi Takip Ettirme

Çalışırken Videosu