Thursday, February 12, 2009 10:16 AM
mjurek
Malá hádanka aneb sám sobě za blbce
Vyvíjel jsem nějakou demo aplikaci (na Surface, ale to není až tak důležité). Při tom jsem si ověřil, že ani přibývající množství šedin neochrání člověka před tím, aby v kódu dělal triviální chyby, které ho nutí si tyto šediny vzteky rvát. Posuďte sami.
Potřeboval jsem dynamicky měnit obrázek v UI, přičemž jsem předem neznal jeho rozlišení ani stranový poměr. Byl umístěn v kontejneru s pevnou výškou a šířkou (z určitého, pro ilustraci nepodstatného důvodu jsem nemohl použít dynamičtější kontejner). Mým cílem bylo změnit velikost kontejneru tak, aby poměr stran odpovídal poměru u vloženého obrázku. Napsal jsem tedy zhruba následující kód:
ScatterViewItem container = (ScatterViewItem) this.Parent;
container.Width = this.Photo.Source.Width / this.Photo.Source.Height * container.Height;
Vše fungovalo perfektně. O místo vedle jsem měl stejný problém s vloženým videem. Copy/Paste a malá úprava mne přivedly k tomuto kódu:
ScatterViewItem container = (ScatterViewItem) this.Parent;
container.Width = this.Movie.NaturalVideoWidth / this.Movie.NaturalVideoHeight * container.Height;
Tento ovšem naprosto nefungoval. Kdo první uhádne proč? Nehledejte v tom nic tajemného, je to opravdu chyba na úrovni prvního ročníku programování na gymnáziu, jenom není na první pohled příliš vidět.