Invalidate   zodpovězená otázka

VB.NET, WinForms

Zdravím.

Mám takový pěkný problém s Invalidate(). Do Timer1_Tick jsem napsal podmínku která určuje kam se má daný objekt vykeslit. Těch podmínek je tam několik, ale vždycky se má vykreslit jeden a ten sám objekt. Problém je také v tom, že se má tento objekt vykreslit nad PictureBox aniž by do něj zasáhl. Takže potřebuji, aby se před vykreslením objektu smazal ten před ním.

Pro pochopení napíšu co má program dělat. Porovná aktuální čas a čas určený podmínkou a podle toho má rozhodnout kde na časové přímce zobrazí obdélník a když se čas posune do dalšího úseku, vymazat ten obdélník před tím a vykreslit nový vedle něj.

Myslel jsem si, že to napíšu přes ImageList a podkladový obrázek budu vždy překreslovat, ale ImageList má povolený rozměr max 256 a já mám ten obrázek 800x500, takže tím pro mě padá ImageList.

Díky za obpovědi. Tonda

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

V timeru volejte jen PictureBox1.Invalidate, které zajistí, že systém zavolá na PictureBoxu událost Paint. Můžete ji volat jen tehdy, pokud se vykreslená věc změní, není nutné neustále překreslovat to samé.

Samotné rozhodování a kreslení ale provádějte v události PictureBox_Paint, protože v případě, že byste okno minimalizoval či překryl jiným, po znovuobjevení je třeba jej překreslit okamžitě a ne až při timeru. Paint se v takovém případě zavolá automaticky vždy, kdy je třeba objekt překreslit.

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