Rychlost GDI+   otázka

WinForms

Nevím, jestli něco dělám špatně, ale zdá se mi, že GDI+ nějak nestíhá.

Mám mapovou aplikaci (v Pictureboxu je obrázek mapy z mapového serveru - ale to je jedno) a mám funkci ZoomIN - tedy uživatel klikne do mapy, táhne myší, vykreslí obdelník a na základě toho mu mapový server zašle nový obrázek. A problém je právě v dynamickém vykreslování obdelníku. Je to trhané, ne plynulé, což je zrovna při operaci zoomIn značně nepohodlné pro uživatele. Čím to může být? Narazil jsem na hranici GDI+ nebo dělám něco neoptimálně či špatně?

Zde je kód (část kódu):

v konstruktoru formu:

zoomBitmap = new Bitmap(picMap.Width, picMap.Heigh);
zoomGraphic = Graphics.FromImage(zoomBitmap);

v picMap_MouseMove:

zoomBox = new Rectangle(startClickX, startClickY, e.X - startClickX, e.Y - startClickY);
zoomGraphic.Clear(Color.Transparent);
zoomGraphic.DrawRectangle(p, zoomBox);
picMap.Invalidate();

v picMap_Paint:

e.Graphics.DrawImage(zoomBitmap, 0, 0);

Díky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A ještě jedna drobnost, když jsem kdysi něco podobného dělal ve VB.NET, tak to fičelo bez problémů. Jenže teď to musím udělat v c#.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak v tom případě bude zřejmě něco špatně v kódu. Visual Basic i C# běží na .net frameworku takže mají víceméně stejné možnosti a omezení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem to overil a je to to same, jak ve vb, tak v c#... asi se mi to s necim popletlo...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, otázkou je, jak rychle je vám schopen dodávat server ty obrázky. Co se týče GDI a GDI+, nějakou zázračnou rychlost od nich čekat nemůžete, ale když se to udělá správně, mělo by to chodit.

Co můžu doporučit - pokud kreslíte na celou plochu PictureBoxu, před vykreslováním se PictureBox snaží vybarvit pozadí, což dost zdržuje. Dá se toho zbavit nějak přes funkci SetStyle (nastavit jí vlastnosti DoubleBuffer, OptimizedDoubleBuffer anebo AllPaintingInWmPaint, nepamatuji si to přesně, zkuste si s tím pohrát - http://msdn.microsoft.com/en-us/library/... ).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback