Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kruzno kretanje kontrole

[es] :: .NET :: .NET Desktop razvoj :: Kruzno kretanje kontrole

[ Pregleda: 4321 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Kruzno kretanje kontrole23.03.2009. u 11:02 - pre 182 meseci
Kako napraviti kontrolu koja bi se kretala po formi, ali da to kretanje opisuje krug ili elipsu?
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

bocy
Beograd

Član broj: 7508
Poruke: 90
*.adsl-a-1.sezampro.yu.



+1 Profil

icon Re: Kruzno kretanje kontrole23.03.2009. u 12:56 - pre 182 meseci
Evo kako bih ja to uradio.

Recimo hoces textbox da se krece putanjom kruznice.

Textbox kontrola ima .Location koji odredjuje poziciju crtanja kontrole.

Odredi poluprecnik kruznice i odredi njen centar.

postavi npr timer koji ce menjati ugao kruznice od 0 do 359

Nakon toga preko sin i cos odredi tacan x i y koordinatu i to dodaj na centar kruznice

i promeni location kontrole i to ti je to :)
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kruzno kretanje kontrole23.03.2009. u 13:53 - pre 182 meseci
Hvala na odgovoru, ali nisu mi jasni neki koraci pa ako mozes da mi posjasnis.

Citat:

postavi npr timer koji ce menjati ugao kruznice od 0 do 359

Nakon toga preko sin i cos odredi tacan x i y koordinatu i to dodaj na centar kruznice


SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

bocy
Beograd

Član broj: 7508
Poruke: 90
*.adsl-a-1.sezampro.yu.



+1 Profil

icon Re: Kruzno kretanje kontrole23.03.2009. u 16:05 - pre 182 meseci
Citat:
dava: Hvala na odgovoru, ali nisu mi jasni neki koraci pa ako mozes da mi posjasnis.


koristis sistemsku funkciju timer koju poseduje c#. Namestis da se aktivira svake 0.1 sekunde, odnosno 100ms npr.

Ugao kruznice ide od 0 do 360 stepeni, s tim da je ugao 360 isto sto i 0. Ali posto bi bilo davljenje, postavis da se ugao povecava za po 10 stepeni pri svakom startovanju funkcije koju timer izvrsava.

Osnovno iz matematike, racunas x i y koordinate x = r*cos(ugao), y=r*sin(ugao)

ako imas koordinate centra, onda samo dodajes x i y koje si dobio da bi dobilo lokaciju kontrole na obodu kruga



 
Odgovor na temu

IvanBeograd
Kladza
Beograd

Član broj: 83376
Poruke: 379
89.216.49.*

Sajt: www.dza-bu-drz-ne-daj.com


Profil

icon Re: Kruzno kretanje kontrole23.03.2009. u 18:49 - pre 182 meseci
A sto ne probas sa WPF-om ?
SERVIA NOSTRUM REGNUM!
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
91.148.81.*

ICQ: 20785904


+4 Profil

icon Re: Kruzno kretanje kontrole23.03.2009. u 20:46 - pre 182 meseci
ovo je vise tema za art of programming...
naci jeftin nacin za kruzenje objekta... svakako ako vec izracunamo sin nema potrebe da racunamo i cos , vec je verovatno jeftinije da korstimo pitagoru.

zatim, kad jednom izracunamo 36 tacaka, nema potrebe da ih iznova racunamo, vec je bolje da ih zveknemo u neku indexiranu strukturu...

a u sustini i ne moramo da racunamo (i ili drzimo) svih 36 tacaka, vec je dovoljno 9 tacaka, tj 1 kvadrant. (ostale simetrijom mozemo nadjemo).

u stvari, mozda je dovoljno samo pola kvadranta (i jopet simetrija)...

interesantna tema...

 
Odgovor na temu

Vranac
Vranac Srdjan
Software developer
Novi Sad, Vojvodina

Član broj: 3493
Poruke: 353
77.46.196.*

Jabber: vranac@elitesecurity.org
ICQ: 64150005
Sajt: www.linkedin.com/in/vrana..


+1 Profil

icon Re: Kruzno kretanje kontrole24.03.2009. u 06:02 - pre 182 meseci
To sto ti trazis se zove carousel control. Imas je u vecini control packova koji mogu da se nadju na trzistu (Telerik, DevXpress, ...), vecina je bazirana na WPF.
Malo googlanja i mozes da nadjes sta ti treba, ono na sta sam naleteo na brzaka je ovo 3D Carousel Control Source Code radjeno za .net 1.1 i 2.0, mozda ti pomogne
Idle mind is the devils playground, in my case it turned out to be an amusement park.

Sustina problema ove zemlje:
Legeonar_: Sto pre treba da shvatite da je EU propast i da se tamo mora raditi,a ne samo biti zaposlen.
http://www.elitemadzone.org/p1864861

Nobody Remains Virgin, Life Fucks Everyone
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kruzno kretanje kontrole24.03.2009. u 07:39 - pre 182 meseci
@bocy uspio sam da dobijem elipsasto kretanje, ali mi izgleda malo iztrzano. Koristio sam ovaj kod:

Code:



    timerAnimShow.Tick += new EventHandler(ShowMe);
    timerAnimShow.Interval = 100;
    timerAnimShow.Enabled = true;
    timerAnimShow.Start();

        ...

    void ShowMe(object sender, EventArgs e)
    {
           if(bIsShowAnimating)
           {
                          ugao++;
                          if (ugao == 360) ugao = 1;

                          int dx = Convert.ToInt16((9 * Math.Cos(ugao) / 3));
                          int dy = Convert.ToInt16((3 * Math.Sin(ugao)) / 3);
                          this.Location = new Point(this.Location.X - dx, this.Location.Y - dy);
                
                    }

            }


Metoda ShowMe se izvrsi na svaki tick tajmera kojem je interval 100. Ako smanjim interval, objekat se prebrzo krece. Ovo djeljenje sa tri sam dodao kao bi kretanje izgledalo prirodnije.
@sallle nije ti losa ideja, samo sto ovim kodom ne mogu da dobijem 36 tacaka i zbog toga mi kretanje izgleda istrzano.

A WPF je?
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

bocy
Beograd

Član broj: 7508
Poruke: 90
*.adsl-a-1.sezampro.yu.



+1 Profil

icon Re: Kruzno kretanje kontrole24.03.2009. u 08:28 - pre 182 meseci
Koristi ovo :)

Postavi timer na 50ms timer.inetrval(50);

postavi koordinate centra kruga na xp = 200; yp = 200; a xp i yp definisi kao int;

i ne mozes koristiti samo ugao, vec ga moras konvertovati u radijane

i imaces savrseno glatku animaciju

onda ti ostaje da se igras. umesto ugao++ koristi ugao += nekavrednost;

evo ti sve

e da, i ne pomeraj prozor, vec postavi npr neki label koji ces pomerati



Code:

                public System.Windows.Forms.Timer timerAnimShow;
        public int ugao = 0;
        public bool bIsShowAnimating = false;
        public int xp = 0;
        public int yp = 0;
        public int r = 100;
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();
            
            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
            
            bIsShowAnimating = true;
            
            xp = 200; yp = 200;
            timerAnimShow = new Timer();
            timerAnimShow.Tick += new EventHandler(ShowMe);
            timerAnimShow.Interval = 50;
            timerAnimShow.Enabled = true;
            timerAnimShow.Start();

        }
        
        void ShowMe(object sender, EventArgs e)
        {
               if(bIsShowAnimating)
               {
                  ugao++;
                  if (ugao == 360) ugao = 1;
                  int dx = Convert.ToInt16((r * Math.Cos((Math.PI * ugao) / 180)));
                  int dy = Convert.ToInt16((r * Math.Sin((Math.PI * ugao) / 180)));
                  label1.Location = new Point(xp + dx, yp + dy);
            }

        }

    }
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
77.46.189.*



+987 Profil

icon Re: Kruzno kretanje kontrole24.03.2009. u 08:31 - pre 182 meseci
Pazi ugao koji racuna Math.Cos je u radijanima i ugao se krece od 0 do 2*pi. Stoga tvoja podela nije dovoljno "fina" za glatko kretanje.

Pa bi kod trebao da bude:

Code:

        private void timer1_Tick(object sender, EventArgs e)
        {
            ugao = (++ugao) % 360;
            double xkoord = 300 + 200 * Math.Cos(2 * 3.14 * (double)ugao / 360.0d);
            double ykoord = 300 + 200 * Math.Sin(2 * 3.14 * (double)ugao / 360.0d);

            button1.Top = (int)xkoord;
            button1.Left = (int)ykoord;
        }



P.S. A ovo je tako "CPU intensive" izracunavanje da je potrebno kesiranje i zezanje ...
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kruzno kretanje kontrole24.03.2009. u 13:38 - pre 182 meseci
Hvala ljudi sada radi kako treba.
@Igore, ako mislis na opterecenje procesora, mislim da nije toliko strasno, jer one dve formule za racunanje x i y kordinate nisu nista za procesor, na svakid 50 ms. I onako se procesor ubi od dosade dok mu ne dodje ponovo tikmer tick.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
77.46.189.*



+987 Profil

icon Re: Kruzno kretanje kontrole24.03.2009. u 13:52 - pre 182 meseci
@dava
Primeti smajli na kraju te recenice...
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Kruzno kretanje kontrole25.03.2009. u 10:27 - pre 182 meseci
...aaa ok.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Kruzno kretanje kontrole

[ Pregleda: 4321 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.