Obrázek z Resources   otázka

VB.NET, WinForms

Přeji hezký den,

a dovoluji se na přítomné obrátit s následujícím dotazem. Ve Visual Basic 2008 jsem si vytvořil menší aplikaci. Kromě jiného (kupodivu funkčního) zde po stisku tlačítka na formu otevřu okno Dialogu s umístěným PictureBoxem do kterého načtu z databáze na disku obrázek. Názvy obrázků jsou rozlišeny indexy (obr_1, obr_2, obr_3 .... atd). Načtení provádím následující, zřejmě klasickou sekvencí kde s využitím obsahu proměnné (pozice) jako indexu vyberu patřičný obrázek.

  Dim dlg As New Dialog2()                'nové okno
        Dim pozice As Single
        Dim x As String
        
        x = "F:\VB_net\Projekty\obr_" & pozice & ".jpg"
        dlg.PictureBox1.Image = Image.FromFile(x)  'načtení obrázku

V konečné fázi jsem ale chtěl aby vše bylo po kompilaci v jednom souboru. Přesunul jsem proto obrázky do položky Resources s tím, že je budu odsud podobně načítat. Zobrazení obrázku pomocí "tvrdého" zadání např.

My.Resources.obr_1

samozřejmě funguje. Na to, jak zde ale využít obsah proměnné jako indexu obrázku, jsem však nepřišel. Jsem úplný začátečník a je dost dobře možné, že tento způsob načítání je z mé strany zcela nesmyslný. Chtěl bych proto požádat o radu zda lze tento postup nějak takto realizovat nebo se musí zvolit něco zcela jiného. Přes veškerou snahu jsem na netu na nějaké řešení nenarazil. Funkční způsob pomocí SelectCase jsem však kvůli počtu obrázků a zřejmě i rychlosti zobrazení zavrhl.

Předem děkuji za jakoukoliv radu.

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

Obrázky můžete například umístit do ImageListu a pak k nim přistupovat takto:

Dim IDobrazku as integer

Me.ImageList1.Images(IDobrazku)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Problém je, že v ImageListu musí mít všechny stejnou velikost a barevnou hloubku...

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

Děkuji za poskytnutí rady. Zobrazení je sice funkční, kvalita obrázku je však špatná. Nedá se prakticky rozeznat obsah. Je zřejmě zapotřebí nastavit parametry obrázku jak se zmiňuje pan Linhart. Jaké a kde ale nevím. Ale i tak děkuji za snahu. O něčem jiném nemáte povědomí? V PictureBoxu se zobrazí perfektní obrázky i v rozličných velikostech a bez nastavení.

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

V design móde kliknite dole na ikonu toho ImageListu a potom skúste v Properties Window nastaviť vlastnosti ImageListu na hodnoty, ktoré zodpovedajú obrázkom.Tie sa dajú zistiť v skoro všetkých editoroch bitmapových obrázkov, na XP aj obyčajným skicárom(v českej verzii OS sa to volá Malování)

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

Když nastavíte barevnou hloubku na maximum, tedy 32 bitů, nebude žádný problém. Ale řešení s ImageListem bych nepoužíval, věci uložené v resources lze normálně v cyklu enumerovat, už se to zde řešilo, použijte hledání.

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

Zatím jsem na nic nenarazil ale i přesto všem díky za rady.

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

Za použití systému pokus - omyl jsem se kupodivu dopracoval k sekvenci, která je funkční a jenž natáhne obrázky z Resources i s pomocí indexu jak jsem potřeboval. Nevím sice zda je toto řešení optimální ale pro mé potřeby funguje. Pro zajímavost jej přikládám.

 Dim dlg As New Dialog2()       'vytvořit nové okno

        Dim pozice As Single

        dlg.PictureBox1.Image = My.Resources.ResourceManager.GetObject("obr_" & pozice)
       

Ještě jednou díky všem za rady.

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