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

Kretanje figure po formi

[es] :: .NET :: Kretanje figure po formi

[ Pregleda: 1991 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dejan85

Član broj: 155180
Poruke: 59
*.adsl-3.sezampro.yu.



Profil

icon Kretanje figure po formi22.11.2007. u 20:31 - pre 200 meseci
Pocinjem da pravim neku manju igricu (c++.net). Ovo mi je prvi problem. Video sam da sa brisanjem, figure pri pomeranju trepere, i procitao da je resenje double buffering. Ali ne znam tehnicki to da uradim. Imam kod na timer-u (pomera krug u desno)

static int i = 100;
Graphics * g = Graphics::FromHwnd(Form1::Handle);
Pen * pen = new Pen(Color::Black);
g->Clear(Form1::BackColor);
g->DrawEllipse(pen,i++,100,50,50);

Kakvo bi ovo resenje izgledalo uz double buffering?
Uzeo sam ovo kao primer moze i nesto drugo sto bi mi koristilo...

I jos nesto... Nije mi jasno kako funkcionise timer, recimo ako mi se izvrsava neka funkcija kojoj treba dosta vremena i dodje vreme da se izvrsi ono na timer-u, jel se funkcija prekida i prelazi na timer ili ce da saceka da se funkcija zavrsi pa tek onda prelazi na timer.

 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.adsl-2.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Kretanje figure po formi22.11.2007. u 20:59 - pre 200 meseci
Za ovo drugo - mislim da će se preskočiti taj takt tajmera.

Za prvo... Kada postaviš duble buffering i ostale zvrčke kod na dalje je sasvim isti. Samo moraš da obratiš pažnju na to što moraš koristiti Graphics objekat koji dobijaš od sistema jer u suprotnom double buffering neće da ima efekta.
 
Odgovor na temu

dejan85

Član broj: 155180
Poruke: 59
*.adsl-3.sezampro.yu.



Profil

icon Re: Kretanje figure po formi22.11.2007. u 23:44 - pre 199 meseci
Citat:
toxi_programer: Kada postaviš duble buffering i ostale zvrčke kod na dalje je sasvim isti. Samo moraš da obratiš pažnju na to što moraš koristiti Graphics objekat koji dobijaš od sistema jer u suprotnom double buffering neće da ima efekta.


Nisam radio sa time i bas to ne znam ni sta da postavim ni koji da koristim. Trebalo bi mi malo opsirnije. Konkretno:
Koji tip da koristim i kako da u njega ucitam deo forme(ili celu), da bi onda u njega nacrtao nesto, i na kraju koja metoda da to nacrtano prikazem na formu.
Koliko sam video to bi trebalo da bude princip rada za double buffering
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
79.101.143.*

Jabber: DarkMan


Profil

icon Re: Kretanje figure po formi23.11.2007. u 11:08 - pre 199 meseci
Mozes da napravis panel za double buffering pa u njemu da crtas. Posto slabo znam C++.NET evo ti kod u C#.
Code:

    public class PanelEx: Panel
    {

        public PanelEx()
        {
            this.SetStyle(ControlStyles.DoubleBuffer |
                          ControlStyles.UserPaint |
                          ControlStyles.AllPaintingInWmPaint |
                          ControlStyles.ResizeRedraw,
                          true);
            this.UpdateStyles();
        }

        protected override void OnPaintBackground(PaintEventArgs e)
        {
            //base.OnPaintBackground(e);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            // ovde odradis iscrtavanje
            //base.OnPaint(e);
        }
    }

Kada zelis da forsiras novo iscrtavanje zoves Invalidate() nad panelex objektom da bi sistem sam pozvao Paint event i da bi dobio Graphics objekat od sistema (kao sto ti je i Nemanja preporucio).
 
Odgovor na temu

[es] :: .NET :: Kretanje figure po formi

[ Pregleda: 1991 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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