• 24-12-2016, 17:28:38
    #1
    arkadaşlar c# da bi ödevim için oluşturduğum daireyi rastgele hareket ettirmem lazım bunu pictureboxda yapabiliyorum ama oluşturduğum şekilde yapmam lazım nasıl yapabilirim??
  • 24-12-2016, 18:29:58
    #2
    nasil cizdiriyorsun bilmiyorum ama cizdirdigin dairenin nesnesini global olarak yap (her yerde erisebilmek icin).. daha sonra da mesela bir timer in icinde ya da buton click in icinde bu cemberin konumunu degistirme kodunu yazacaksin. (location change)
    en onemli nokta koordinatlari degistirdikten sonra this.Invalidate(); metodunu cagirman.
  • 24-12-2016, 18:53:15
    #3
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    nasil cizdiriyorsun bilmiyorum ama cizdirdigin dairenin nesnesini global olarak yap (her yerde erisebilmek icin).. daha sonra da mesela bir timer in icinde ya da buton click in icinde bu cemberin konumunu degistirme kodunu yazacaksin. (location change)
    en onemli nokta koordinatlari degistirdikten sonra this.Invalidate(); metodunu cagirman.
    cevap için teşekkürler.
    şu şekilde oluşturdum;
    Graphics bs;
    bs = this.CreateGraphics();
    SolidBrush boya = new SolidBrush(Color.Black);
    bs.FillEllipse(boya, 55, 60, 65, 70);

    bu şekli random bir şekilde nasıl hareket ettirebilirim timer yardımıyla
  • 24-12-2016, 20:02:51
    #4
    Üyeliği durduruldu
    emrenazli adlı üyeden alıntı: mesajı görüntüle
    cevap için teşekkürler.
    şu şekilde oluşturdum;
    Graphics bs;
    bs = this.CreateGraphics();
    SolidBrush boya = new SolidBrush(Color.Black);
    bs.FillEllipse(boya, 55, 60, 65, 70);

    bu şekli random bir şekilde nasıl hareket ettirebilirim timer yardımıyla
    PictureBox nesnesi kullanıyorsan Properties ten Location özelliğini kodla değiştirip hareket etmesini timer ile sağlaya bilirsin.
    Formun boyutlarını alıp form içerisinden çıkmamasınıda sağlaya bilirsin
  • 25-12-2016, 00:44:34
    #5
    basit bir ornek yaptim.. kendine gore duzenlersin.. Timer i kontrol olarak eklemedim direk kodda kullandim, fark yok pek. Istiyorsan forma bir timer ekle, properties den interval i ayarla ve timer a cift tiklayip koda gir. Benim yazdigim timertickon metodunun icerigini alabilirsin.

    2 tane timer yaptim, birisi her 1 saniyede bir daire ciziyor, digeri de ondan 1 saniye sonra daireyi siliyor (daha dogrusu formu yeniliyor diyelim- invalidate timer i).

    Anlamadigin yer olursa sorabilirsin, bastice yazdim kodu ki daha iyi anlayabilmen acisindan.

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
    
            //Degiskenler
            Random random = new Random();
            Graphics benimsayfam;
            private Timer timer;
            private Timer invalidateTimer;
            private const int en=65;
            private const int boy=75;
    
    
            //kurucu metod
            public Form1()
            {
                InitializeComponent();
                timer =new Timer();
                timer.Interval = 1000;
                timer.Tick+=TimerOnTick;
    
                invalidateTimer = new Timer();
                invalidateTimer.Interval = 1000;
                invalidateTimer.Tick += InvalidateTimerOnTick;
            }
    
    
    
    
    
            //form yuklendikten sonra calisan metod
            private void Form1_Load(object sender, EventArgs e)
            {
               timer.Start();
            }
    
    
            //sekli cizdiren metod
            private void SekilCiz()
            {
        
                benimsayfam = this.CreateGraphics();
                SolidBrush boya = new SolidBrush(Color.Black);
                int sayi1 = RasgeleSayiUret(false);
                int sayi2 = RasgeleSayiUret(true);
                benimsayfam.FillEllipse(boya, sayi1,sayi2, en,boy);
              invalidateTimer.Start();
    
            }
    
            //rasgele sayi ureten metod
            private int RasgeleSayiUret(bool yataymi)
            {
                int uretilenSayi;
                if (yataymi)
               
                    uretilenSayi = random.Next(0, this.Width - en - 5);
                else
                  uretilenSayi= random.Next(0, this.Height - boy - 5);
              
                return uretilenSayi;
            }
    
    
    
            //sekli belli surede cizdiren timer tick metodu
            private void TimerOnTick(object sender, EventArgs eventArgs)
            {
                SekilCiz();
    
            }
    
    
            //formu yenileyen timer tick metodu
            private void InvalidateTimerOnTick(object sender, EventArgs eventArgs)
            {
                invalidateTimer.Stop();
                this.Invalidate();
            }
    
        }
    }
  • 25-12-2016, 18:17:17
    #6
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    basit bir ornek yaptim.. kendine gore duzenlersin.. Timer i kontrol olarak eklemedim direk kodda kullandim, fark yok pek. Istiyorsan forma bir timer ekle, properties den interval i ayarla ve timer a cift tiklayip koda gir. Benim yazdigim timertickon metodunun icerigini alabilirsin.

    2 tane timer yaptim, birisi her 1 saniyede bir daire ciziyor, digeri de ondan 1 saniye sonra daireyi siliyor (daha dogrusu formu yeniliyor diyelim- invalidate timer i).

    Anlamadigin yer olursa sorabilirsin, bastice yazdim kodu ki daha iyi anlayabilmen acisindan.

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
    
            //Degiskenler
            Random random = new Random();
            Graphics benimsayfam;
            private Timer timer;
            private Timer invalidateTimer;
            private const int en=65;
            private const int boy=75;
    
    
            //kurucu metod
            public Form1()
            {
                InitializeComponent();
                timer =new Timer();
                timer.Interval = 1000;
                timer.Tick+=TimerOnTick;
    
                invalidateTimer = new Timer();
                invalidateTimer.Interval = 1000;
                invalidateTimer.Tick += InvalidateTimerOnTick;
            }
    
    
    
    
    
            //form yuklendikten sonra calisan metod
            private void Form1_Load(object sender, EventArgs e)
            {
               timer.Start();
            }
    
    
            //sekli cizdiren metod
            private void SekilCiz()
            {
        
                benimsayfam = this.CreateGraphics();
                SolidBrush boya = new SolidBrush(Color.Black);
                int sayi1 = RasgeleSayiUret(false);
                int sayi2 = RasgeleSayiUret(true);
                benimsayfam.FillEllipse(boya, sayi1,sayi2, en,boy);
              invalidateTimer.Start();
    
            }
    
            //rasgele sayi ureten metod
            private int RasgeleSayiUret(bool yataymi)
            {
                int uretilenSayi;
                if (yataymi)
               
                    uretilenSayi = random.Next(0, this.Width - en - 5);
                else
                  uretilenSayi= random.Next(0, this.Height - boy - 5);
              
                return uretilenSayi;
            }
    
    
    
            //sekli belli surede cizdiren timer tick metodu
            private void TimerOnTick(object sender, EventArgs eventArgs)
            {
                SekilCiz();
    
            }
    
    
            //formu yenileyen timer tick metodu
            private void InvalidateTimerOnTick(object sender, EventArgs eventArgs)
            {
                invalidateTimer.Stop();
                this.Invalidate();
            }
    
        }
    }
    hayırlı akşamlar ellerine sağlık teşekkür ederim kodlardan örnek alarak yapmaya çalışacağım takılırsam yine danışabilirim tekrar teşekkürler