none
[C#] Práce s (opravdu) velkými obrázky v Pictureboxu

    Dotaz

  • Zdravím, mám po dlouhé době problém, se kterým nevím kudy ven:

    Mám dva formy,

    1: Je tu picturebox (rozměry jsou nízké, 1024*768, nebo tak něco, nezáleží na tom), v tom pictureboxu je zobrazen obrázek o rozměrech tak 20000px * 5000px, sizeMode je Normal.

    2: v tomto formu je jen posuvník. Jak hýbu posuvníkem, posouvá se náhled na obrázek v prvním formu (jako kdybych se koukal do kamery a pohyboval s ní).

    Problém je, že i kdybych se rozkrájel, nemůžu dosáhnout toho, aby tato akce byla naprosto plynulá. Zkoušel jsem vykrajování pomocí rectanglu, pak jsem akce rozdělil do mnoha nezávislých vláken, zkoušel jsem obrázek řezat, nic nepomohlo. Nejrychlejšího výsledku jsem dosáhl tak, že jsem picturebox umístil do Panelu a měním property pictureboxu Left a Top, takže to vypadá jako by se pohyboval obrázek, ale pohybuje se celý pictureBox.

    Možná je problém v tom, že vše dělá procesor (jede tak na 50% - Core2Duo @ 2.66GHz)... Pokud máte jakýkoli nápad, prosím přispějte, děkuji!

    neděle 14. června 2009 16:17

Odpovědi

Všechny reakce

  • Zdravím,

    když si spočítám, že ten Váš obrázek zabere 400 000 000 bytů RAM pro své zobrazování, tak nevidím jako vhodné používat picturebox, který není pro takové množství dat optimalizován. Tady by to už chtělo spíš šáhnout do světa Win32 GDI a C++ a jít hodně dolů a vytvořit si vlastní zobrazovač obrázků, který dokáže i takového mamuta rychle zobrazit.

    Případně bych zkusil WPF, ale při tak velikém obrázku si myslím že i WPF bude mít problémy.

    Havetta
    čtvrtek 18. června 2009 11:49
  • Ahoj, zkoušel jsem příklad tady:
    http://www.codeproject.com/KB/miscctrl/ScalablePictureBox.aspx
    kde mi to běželo i na tak velkém obrázku obstojně (sice trochu s blikáním).
    Máš podobný výsledek ?
    M
    neděle 12. července 2009 21:21