[C#] Kreslení grafiky a protivné problikávání

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod milan.smart 13. 3. 2008 21:33

Zdravím,
V C# jsem si udělal jednoduchou hru Had. Grafiku vykresluji na Form v metodě Form1_Paint kterou volám příkazem Refresh() v Timeru. Bohužel celé mi to tak protivně problikává. Nevíte někdo jak se tohoto nežádoucího efektu co nejjednodušeji zbavit?

Předem děkuji za radu

S pozdravem
Milan
milan.smart
Junior
Uživatelský avatar

Odeslat příspěvekod aacid 13. 3. 2008 21:44

pokial sa nemyslim, tak by mala pomoct metoda double bufferingu.

http://en.wikipedia.org/wiki/Double_buf ... r_Graphics

myslim ze tu je dost dobry priklad priamo v c#:
http://www.codeproject.com/KB/graphics/ ... ering.aspx
aacid
Junior
Uživatelský avatar

Odeslat příspěvekod stribny 21. 3. 2008 15:29

Zkus u formuláře nastavit vlastnost DoubleBuffered na true, mělo by to pomoct.
stribny
Kolemjdoucí

Odeslat příspěvekod milan.smart 21. 3. 2008 22:58

Ajo, vidis to.. ani sem si nevsim ze tam je.. ted nemam cas to zkusit, ale snad to pujde. Ja jsem to totiz vyresil tak co mi poradil kamarad, ze tam vytvorim nejakej panel a pak kreslim na nej a uz mi to taky neblika..
milan.smart
Junior
Uživatelský avatar

Odeslat příspěvekod milan.smart 22. 3. 2008 00:53

ty jo.. supr.. :)) ono to fakt funguje.. a jak jednoduchy :) dik
milan.smart
Junior
Uživatelský avatar

Odeslat příspěvekod stribny 1. 4. 2008 13:59

Rád jsem pomohl:-)
stribny
Kolemjdoucí

Odeslat příspěvekod qwerasdf 1. 12. 2012 08:52

Ahoj, prosimte ja budu delat neco podobnyho ..nemohl by jsi sem dat kod ...jak jsi to delal ..mam nejaky napady jak zacit ale nevim :D ... rikal jsem si ze hejbat se bude tak ze ze ocas dam na misto hlavy kam by se pohla a pres ten timer se bude posouvat
qwerasdf
Kolemjdoucí

Odeslat příspěvekod PiranhaGreg 1. 12. 2012 10:34

Vytvoř si klasickkou frontu Queue<Point> pro hada, kde budou všechny hadovi souřadnice, pak si vytvoř ještě jednu proměnou typu Point, která bude značit jídlo. Pokud had stoupne na jídlo, akorát nevyhazuj z fronty poslední prvek a vygeneruj jídlo někde jinde. Přes podmínky vyřeš kraje mapy. Celý to pak v intervalech vykresluj. Jeden bod zvětši třeba 20x, ať to není tak mikro...
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod mbrunas.p 3. 12. 2012 20:39

na hry je tu XNA dosáhneš s nim i vyšího výkonu (je to taková nadstavba na directx)
mbrunas.p
Kolemjdoucí

Odeslat příspěvekod Lord_D1as 17. 11. 2016 12:58

Existuje metoda pro vykreslení na panelu, která nepřekreslí co bylo vykresleno nebo se to musi nekde externe naprogramovat? V c#.
Lord_D1as
Kolemjdoucí

Odeslat příspěvekod Bespi_ 17. 11. 2016 13:30

Ano, je to vec nastaveni.
Bespi_
Junior

Odeslat příspěvekod satikcz 17. 11. 2016 16:33

mbrunas.p píše:na hry je tu XNA dosáhneš s nim i vyšího výkonu (je to taková nadstavba na directx)

XNA uz neni podporovane, takze spis jeho opensource pokracovatel Monogame a nebo treba SharpDX.
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), MSI RTX 2080Ti Trio, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, Samsung EVO 840 500 GB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod Bespi_ 17. 11. 2016 18:25

V dobe kdy to psal podporovane bylo :D .
Bespi_
Junior

Odeslat příspěvekod Lord_D1as 18. 11. 2016 05:48

Ok dekuju, a to mám nastavit nekde v programu nebo je to sloziteji? Myslim tim když je to vec nastavení...
Lord_D1as
Kolemjdoucí

Odeslat příspěvekod satikcz 18. 11. 2016 10:26

Ah, nevsim jsem si, ze jde o vlakno ozivene po X letech :D
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), MSI RTX 2080Ti Trio, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, Samsung EVO 840 500 GB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků