Jump to content

C# Nesnenin Hareket Ettiğini Görebilmek


mertugruul
 Share

Recommended Posts

PicturenBox2'nin Location.Y koordinatını -75 olana kadar 1'er 1'er arttıracağım. Ama arttırıkende bu artışı görmek istiyorum formda nasıl yapabilirim. Yani, Form açıkkken pictureBox'ın hareket ettiğini görücem.

 

Ekran Görüntüsü:

 

http://prntscr.com/6v4wnp

        private void Form1_Activated(object sender, EventArgs e)
        {
            for (; ; )
            {
                if (pictureBox2.Location.Y != -75)
                    pictureBox2.Location = new Point(pictureBox2.Location.X, pictureBox2.Location.Y - 1);
                else
                    break;
                    
            }
        }

Kodlarım böle. İlk sonsuz döngüye soktum. Form'umun Location.Y koordinatının en sonu -75 olduğu için manuel olarak -75 yazmak zorunda kaldım. Eğer bunun manuel değilde otomatik olarak bir yolu varsa sölerseniz iyi olur. Daha sonra pictureBox'ın Location.Y özelliğini yukarıya doğru birer birer arttırdım. -75'e geldiğinde ise döngüden çıkarttım. Ama ben bu pictureBox2'yi hareket ederken görmek istiyorum form üzerinde.

Link to comment
Share on other sites

Timer yada asenkron bir yapı kullanarak yapmalısın, diğer türlü pek faydalı olmaz.

 

Buradan (Dropbox) bir örnek hazırladım nesneyi nasıl hareket ettirebileceğinle ilgili. Activated event'ına timer'ı başlatıp belli bir yere geldiğinde ise istediğin işlemi durdurabilirsin

Edited by Bitmap
Link to comment
Share on other sites

Konuyu açtıktan hemen sonra timer aklıma geldi. Yazmayı unuttum. Teşekkür ederim yine de.

http://prntscr.com/6v4wnp

 

Ama şöyle bir sorunum var.  Resimde de görüldüğü gibi pictureBox2'yi ben  Location.Y koordinatı -68 olana kadar ilerleticem. ilerliyor daha sonra ise -68 olduğumu tekrar eksi konumuna gelip aynı yerden devam etmesini istiyorum. Lakin gidip geri gelmiyor  :D

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 100;
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (pictureBox2.Location.Y != -68)
            {
                pictureBox2.Location = new Point(pictureBox2.Location.X, pictureBox2.Location.Y - 15);
                if (pictureBox2.Location.Y == -68)
                {
                    pictureBox2.Location = new Point(158, 305);
                    
                }
            }
        }

Edit: Sorun çözüldü. -15 yazarak -68 konumuna ulaşmadığı için -1 yapmak zorunda kaldım. Teşekkürler.

Edited by mertugruul
Link to comment
Share on other sites

if (pictureBox2.Location.Y != -68)
            {
                pictureBox2.Location = new Point(pictureBox2.Location.X, pictureBox2.Location.Y - 15);
                if (pictureBox2.Location.Y <= -68)
                {
                    pictureBox2.Location = new Point(158, 305);
                    
                }
            }

şeklinde denediğinde problem kalmaz sanırımş.

Link to comment
Share on other sites

if (pictureBox2.Location.Y != -68)
            {
                pictureBox2.Location = new Point(pictureBox2.Location.X, pictureBox2.Location.Y - 15);
                if (pictureBox2.Location.Y <= -68)
                {
                    pictureBox2.Location = new Point(158, 305);
                    
                }
            }

şeklinde denediğinde problem kalmaz sanırımş.

 

 

Peki <= -68'deki amaç nedir?

1. if deyimi -68 deyilmi diye bakıcak ve -15'er arttırıyor pictureBox'ı. Peki 2.if deyimini pek anlayamadım mantıken olarak. -68 ve -68'den küçük ise diyoruz ama neden?.  Açıklayabilirmisin sade ve anlaşılır şekilde iki if deyimininde çalışma mantığını?

Edited by mertugruul
Link to comment
Share on other sites

 

Peki <= -68'deki amaç nedir?

1. if deyimi -68 deyilmi diye bakıcak ve -15'er arttırıyor pictureBox'ı. Peki 2.if deyimini pek anlayamadım mantıken olarak. -68 ve -68'den küçük ise diyoruz ama neden?.  Açıklayabilirmisin sade ve anlaşılır şekilde iki if deyimininde çalışma mantığını?

şimdi ilk if konum kontrolü yapıyor. yani zaten -68 den küçük ise hereket etmesine gerek yok.

içteki if ise 68'den küçük olup olmadığına bakıyor azaldıktan sonra. eğer 68 den küçük ise yani 15 15 azaltırken -50-15 = -75 gibi bir duruma geldiyse yeniden konumlandırma yapıyor.

15 15 azaltınca -68 e gelemediğinden dolayı -68 den küçük yada eşitmi kontrolü daha mantıklı olur.

iki tane if sizin kodunuzda vardı. sadece onu düzenledim..

 

edit: aslında ilk if deyimi içinde > -68 diyebilirsiniz. sonuçta 15 azaldığında denk gelmesine gerek yok :)

Edited by Bitmap
Link to comment
Share on other sites

şimdi ilk if konum kontrolü yapıyor. yani zaten -68 den küçük ise hereket etmesine gerek yok.

içteki if ise 68'den küçük olup olmadığına bakıyor azaldıktan sonra. eğer 68 den küçük ise yani 15 15 azaltırken -50-15 = -75 gibi bir duruma geldiyse yeniden konumlandırma yapıyor.

15 15 azaltınca -68 e gelemediğinden dolayı -68 den küçük yada eşitmi kontrolü daha mantıklı olur.

iki tane if sizin kodunuzda vardı. sadece onu düzenledim..

 

edit: aslında ilk if deyimi içinde > -68 diyebilirsiniz. sonuçta 15 azaldığında denk gelmesine gerek yok  :)

 

-75'in -68'den küçük olduğu sonradan aklıma geldi. Düşünemedim onu. Teşekkür ederim yardımınız için.

Edited by mertugruul
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...