Diskuze: Windows Store app začátečnické rady

C# .NET .NET (C# a Visual Basic) Windows Store app začátečnické rady American English version English version

Avatar
harmiczek
Člen
Avatar
harmiczek:

Ahoj potřeboval bych poradit s pár nejspíš vcelku jednoduchých věcí které nemůžu vyřešit. Dělám Black Jack na ročníkovou práci ve škole přičemž hru už mám funkční ale nyní řeším její stylování. Získal jsem obrázky karet přičemž teď řeším jak je zobrazit v programu obrázky mam v formátu .png a v designeru jsem si tam dal Image jen nevím jak nastavit jeho source,zároveň název souboru chci skládat z 2 proměných tj. něco jako "C:/x/"barva+čís­lo".png" vím že jsme se ve škole učily přidávat obrázky do resources že jsme je tam ručně přidali a pak s tím pracovali ale jak toho docílit tady jestli to jde jsem nenašel takže proto to zatím řeším celou adresou.
Našel jsem nějaký kódy jako

obrazekHrac1.Source = new BitmapImage(new Uri("/[ApplicationName];component/[folder/]x.png", UriKind.Relative));

Což jsem prostě nepřišel jak s tím pracovat a nebo jsem našel návody na XAML s kterým už vůbec nevím jak pracovat,vím že to možná bude něco lehkýho nějaká prkotina jen v tomdhle jsem samouk a ve škole se učíme čistě c# kde se to řeší hold jinak.

 
Odpovědět 30.4.2013 9:57
Avatar
lcet.m
Člen
Avatar
lcet.m:

Ahoj,

říkáš, že to řešíš celou adresou. Ale nějak není jasné, co vlastně chceš? Jestli číst obrázky z resources, nebo z nějakého adresáře? Poskládat název obrázku samozřejmě není problém, je to prostě string...

 
Nahoru Odpovědět 30.4.2013 11:20
Avatar
harmiczek
Člen
Avatar
Odpovídá na lcet.m
harmiczek:

Prostě když jsem si v designeru vytvořil Image a do něj ten obrázek dostat případně jak pak vyřešit nějaký přidání obrázků přímo do programu abych nemusel zadávat celou adresu což samozřejmě nebude jinde snad ani funkční...

 
Nahoru Odpovědět 30.4.2013 11:44
Avatar
Jan
Člen
Avatar
Jan:

Ahoj, pokud přidáš obrázky do projektu pomocí AddExistItem tak pak k nim můžeš přistupovat takto:

obrazek.Source = new BitmapImage(new Uri("ms-appx:///tvujObrazek.png"))
Nahoru Odpovědět  +1 30.4.2013 13:50
Cogito ergo sum
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na harmiczek
Petr Nymsa:

Ahoj, obrázky musíš načíst ještě s base-uri tj ms-appx:/ Dále bych se mrknul na DataBinding. Bohužel jsem zaítm nestihl napsat díl o DataBinding ale není to nic složitého ( v základu)

Musíš mít pro data nějakou třídu, kde je budeš uchovávat. Poté podědíš BindableBase nebo implementuješ rozhraní INotifyProper­tyChanged. Díky Bindingu nemusíš neustále "refreshovat". Prostě se to postará za tebe. Ty budeš pouze vyměňovat data :). Více zde http://msdn.microsoft.com/…h758320.aspx , dyžtak napiš :)

Editováno 30.4.2013 16:26
Nahoru Odpovědět  +1 30.4.2013 16:25
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
harmiczek
Člen
Avatar
harmiczek:

Díky moc,konečně se zas můžu pohnout dál,zatím si jsem jinak jistej se vším ale kdyžtak se ještě ozvu :).

 
Nahoru Odpovědět 30.4.2013 17:27
Avatar
harmiczek
Člen
Avatar
harmiczek:

Tak tu toho ještě využiju,program zprovozním bez problémů ale nějaký stylování jaksi nezvládám :). Vytvořil jsem si vlastní pozadí a snažím se ho nějak vložit do programu našel jsem todhle -
http://stackoverflow.com/…c-sharp-code
ale jaksi jsem to nezprovoznil možná to dávám špatně,Reference jsem přidal resp. už jsem měl přidanej a ten kód dával do Canvas_Loaded snažil se s tim něco vymyslet ale prostě ne a ne to zrovoznit. Díky za rady.

 
Nahoru Odpovědět 2.5.2013 15:44
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na harmiczek
Petr Nymsa:

Opět, využij XAML. Přes XAML v pohodě uděláš styly, datatemplates apod. Uděláš si třeba jeden soubor MojeStyly.xaml a zde nastavíš všechny styly, poté se už jenom odkazuj na daný styl u komponenty, vše přes XAML. XAML není jenom pro srandu ;).
Pokud chceš pouze změnit pozadí hlavního Gridu, pod Grid přidej

<Grid.Background>
  <ImageBrush ImageSource="blabla" />
</Grid.Background>
Nahoru Odpovědět  +1 2.5.2013 16:57
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
harmiczek
Člen
Avatar
Odpovídá na Petr Nymsa
harmiczek:

Na todhle jsem taky narazil ale popravdě jsem to moc nezkoušel protože s XAML jsem ještě moc nepracoval proto jsem se v tom nějak nehrabal. Zkusil jsem tedy todhle dát do MainPage.xaml mezi <Canvas> </Canvas> kde jsou vypsaný všechny tlačítka ale to asi není ono nebo nejede to ještě jsem zkoušel přepsat na Canvas.Background. Ale prostě todhle nevymyslím a pořádně jsem k tomu taky nic nenašel.

 
Nahoru Odpovědět 2.5.2013 17:23
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na harmiczek
Petr Nymsa:

Opravdu využívej XAML, ulehčí ti to práci ;) Nastyluješ jednou a hotovo. Uděláš DataBinding a pracuje se s tím snadno. To pozadí chceš mít po celé šířce ? Pošli kompletně kód té stránky XAML a i C#, pošli kódy sem http://www.itnetwork.cz/dev-lighter

Koukám, že musím pohnout a napsat články o stylování a DatBindingu

Nahoru Odpovědět 2.5.2013 17:26
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
harmiczek
Člen
Avatar
harmiczek:

Ten kód sem dát nemůžu kvůli tomu že v ročníkový práci podepisuju že kód posytneme pouze škole a vzhledem k tomu že už to mám skoro hotový tak by mohl mít někdo problém kdyby to náhodou našel,ale ten XAML kód sem snad můžu hodit,jde mi jen o to dát obrázek na pozadí přez roztaženej na celou obrazovku nijak ho nebuud měnit jen tam nechci mít jednolitou barvu. Nevím teď jestli je todhle správnej odkaz nebo jak to sem mám přidat - http://www.itnetwork.cz/dev-lighter/97

 
Nahoru Odpovědět 2.5.2013 18:27
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na harmiczek
Petr Nymsa:

Bylo by lepší mít celý Canvas obalený Gridem. Jemu pak nastavíš pozadí jak jsem ti psal anebo využij designér Visual Studia. Grid se ti automaticky roztáhne přes celou obrazovku.

A k celému programu. Ty to nepřepočítáváš asi co ? Zkoušel jsi změnu rozlišení ? Podívej se na mé články, které se tímto problémem zčásti zabývají http://www.itnetwork.cz/…indows-store. Ten Canvas je ale nešťastně zvolený, v tvém případě je k ničemu. Canvas zruš a nahraď ho Gridem. Nebo na ten Canvas něco kreslíš ?

Nahoru Odpovědět 2.5.2013 18:34
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
harmiczek
Člen
Avatar
harmiczek:

Nene tak je to tak nějak můj první program pomocí kterýho se s tím seznamuju a zároveň v tom tvořím tu ročníkovku no,vytvořil jsem si prostě blank aplikaci a v tom programuju,v XAML jsem nepsal nic všechno jsem si to udělal přez Designer o tý změně rozlišení vím no původně jsem to dělal na notebookovým displayi s 1366x768 a teď dělam na FullHD monitoru a je to jen přez kus obrazovky zbytek černo,tipuju že je to přez % ta velikost jen pravda že u tohodhle spoléhám na to že budu prezentovat z notebooku z těch 1366x768 a bude to vypadat tak jak má. Takže kdžy Canvas přepíšu na Grid a přidam tam ten tvůj kód co jsi mi poradil tak už by to mělo jet?

 
Nahoru Odpovědět 2.5.2013 18:47
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na harmiczek
Petr Nymsa:

Podívej se na mé články, mám to tam vysvětlené. Grid ti umožní automatické roztahování, ale ty máš vše napozicované natvrdo. Musíš pozicovat relativně, tj nastavit centrování a odsadit třeba o 80 px. Tlačítka máš pod sebou, narvi je do stackpanelu a ten opozicuj. StackPanel automaticky řadí svoje děti pod sebe. Jen tak pro zajímavost, proč zrovna píšeš ročníkovku v něčem, v čem děláš poprvé ? Přijde mi to jako sebevražda. Navíc správně by jsi měl dořešit další dva povinné pohledy - Snap a Fill view. Dále PLM - Process Life Managment (Suspend režim,...). Jestli chceš spoléhat pouze na své rozlišení budiž :). Já osobně bych se styděl, vědět že aplikace na jiných rozlišení nefunguje

//EDIT využívej tlačítka odpovědět, přijde mi pak upozornění, díky ;)

Editováno 2.5.2013 20:13
Nahoru Odpovědět 2.5.2013 20:11
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
harmiczek
Člen
Avatar
Odpovídá na Petr Nymsa
harmiczek:

No učitelům jde především o to aby fungovalo vše jak má jakožto program,přičemž stylování atd. už moc neřeší ale určitě na tom zapracuju ještě,vybral jsem si to proto že z pohledu C# jsem s tím neměl takovej problém když jsem si to zkusil tak jsm se rozhodl že do toho pujdu a program samotnej jsem zvládl bez problémů a jen s tím nastylováním jsem měl problém,aktuálně teda pracuji na dokumentaci a uvidím pak kolik bude času vzhledem k tomu že 17. je termín a buď to ještě zapracuji před odevzdáním a nebo ve volným čase pro větší pochopení a seznámení si to stejně udělám protože WS apps se mi líbí a rád bych zvládl něco víc :).

 
Nahoru Odpovědět 2.5.2013 20:32
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na harmiczek
Petr Nymsa:

Určitě se podívej na MSDN. Aby ti aplikaci vzali na Windows Store je potřeba splnit několik požadavků.

Plná a funkční podpora Snap a Fill view
Správně vyplněné požadavky (internet, mikrofon,...)
Licenční ujednání
Doporučené je mít i podporavný Portrait view
Aby aplikaci fungovala správně v režimech (Suspend režim, Terminate,...)

Vypadá to možná složitě, ale není :). Tedy co se týče takových základů ;). Pro hry je dobré využít MonoGame - je stejné jako XNA a snadno se s tím pracuje.

Ještě poznámka pro Snap View - za funkční se považuje i jenom logo aplikace, ale nesmí se prsotě objevit rozházené rozhraní apod. Je už na tobě zda aplikaci vymakáš a nabídneš ovládání i ve Snap view. A nakonec, připrav se na velké změny. Vyjde Servis pack pdo názvem Windows Blue, které změní chování Metra, změní pohledy na aplikace -> Microsoft rád dělá programátorům programování zajímavější :D

Nahoru Odpovědět  +1 2.5.2013 21:33
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.