Diskuze: Plynulost pohybu

C# .NET .NET (C# a Visual Basic) Plynulost pohybu American English version English version

Avatar
Dejvos
Člen
Avatar
Dejvos:

Ahoj
//jen tak sem si něco chtěl vyzkoušet a tak jsem si napsal "Skákačku".Třeba to dělám neskutečně špatným způsobem ale to není důvod se rozčilovat :D

Jen se chci zeptat proč se pohyb objektů tak laguje(Je mi jasný proč=pohyb se vykreslí třeba po těch 8 pixelech a už to není takový jako po 1 ale jde mi o to jakto že jsem nepřišel na jiný způsob)...pohyb mám jako Picture Boxy který se posouvaj o tu danou rychlost doleva.Dá se to teda dělat jinak?Nechci žádný rady o Cry enginu..XNA atd.Prostě mě zajímá jak se to dělá v normálním C#.Jinak kdo se chce kouknout tak: http://mojesoubory.funsite.cz/adventure.php
Moc dík za odpovědi.

Odpovědět 24.2.2014 21:33
Neodsuzuj někoho za to co něco neumí, ale uznávej ho za to co umí.Čest nade vše.
Avatar
BlugW
Redaktor
Avatar
BlugW:

Mě to hodilo virus a antivir to blokl. :D

Nahoru Odpovědět 24.2.2014 21:41
Pořiď si mac na www.appletrh.cz. Novinky a zajímavosti ze světa Apple na https://www.applemagazin.eu
Avatar
1001001
Člen
Avatar
1001001:

dal by si sem zdrojový kod ? :D

 
Nahoru Odpovědět 24.2.2014 21:42
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na Dejvos
martinsakra:

We winforms pokud je toho na vykreslování hodně je lepší přes doublebuffering (mám někde kus kodu na to pokud budeš chtít), ve WPF by se to stávat nemělo, leda že bys kreslil fakt něco hroznýho

Nahoru Odpovědět 24.2.2014 21:48
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Dejvos
Člen
Avatar
Odpovídá na BlugW
Dejvos:

No já si to taky musím povolovat abych spustil vlastní projekt :D asi jim společnost "Dejvos programming" nestačí jako věrohodná i když je.. :-)
EDIT:povedlo se to vůbec někomu {(["'hrát'"])}?

Editováno 24.2.2014 21:57
Nahoru Odpovědět 24.2.2014 21:54
Neodsuzuj někoho za to co něco neumí, ale uznávej ho za to co umí.Čest nade vše.
Avatar
Dejvos
Člen
Avatar
Odpovídá na martinsakra
Dejvos:

Jo jasně jestli to někde najdeš tak super každá nová informace se hodí :-)

Nahoru Odpovědět 24.2.2014 21:55
Neodsuzuj někoho za to co něco neumí, ale uznávej ho za to co umí.Čest nade vše.
Avatar
Dejvos
Člen
Avatar
Odpovídá na 1001001
Dejvos:

Jo jasně ale snad až se to nějak vylepší protože jsem to zrovna moc přehledně nepsal a je pravda že se to při vyšší rychlosti laguje takže by to asi nikomu nepomohlo :D .A pokud si to myslel pro pochopení problému tak myslím že to je jasně vysvětlený.

Nahoru Odpovědět 24.2.2014 22:01
Neodsuzuj někoho za to co něco neumí, ale uznávej ho za to co umí.Čest nade vše.
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na Dejvos
martinsakra:

do metody draw we winforms (většinou panelu)

//vytvoření bufferu
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(panel1.CreateGraphics(), new Rectangle(0, 0, panel1.Width, panel1.Height));
//ted dostaneš graphics, jak si zvyklej z winforms
            Graphics g = buffer.Graphics;
//silně se doporučuje "vyčistit" plochu
            g.Clear(panel1.BackColor);

//tady kreslíš

a na záver vykreslíš do panelu a pekně uvolníš pamět
  buffer.Render();
            g.Dispose();
            buffer.Dispose();

tohle zvládne potencionálně hodně, pokud nemáš ve dráw žádnou logiku, a navic je to jeden z nejkratších možností jak využít double buffer :D hodně ostatních jsou dlouhá a složitá ;)

Editováno 24.2.2014 22:06
Nahoru Odpovědět 24.2.2014 22:05
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.