arhive lunare: Aprilie 2013

Rapid şi uşor: Mutaţi un dreptunghi folosind C# într-un App Windows Store

Filozofia mea de blog-ul general este că este foarte bine să blog despre vechi, s-au stabilit temele care au fost acoperite de moarte în altă parte.  Presupun că acest subiect este unul dintre cei, dar eu sunt blogging-ul este oricum.

Am fost de lucru pe un app store fereastră şi eu sunt la partea unde am nevoie pentru a face unele animare.  În acest scop, I-am fost imaginind biţi şi bucăţi de windows magazin app animaţie care, după cum se dovedeşte, este destul de aproape de, dar nu este exact ca, XAML bazat animaţii în .NET (Eu încă mai vin la trântă cu faptul că WinRT <> .NET 🙂 ).

În această dimineaţă am vrut pentru a obţine un mâner pe drag şi drop operaţiuni.  În drum spre care, I-am împotmolit în mişcare un dreptunghi în schimb :).  Aici este codul care se misca un dreptunghi atunci când utilizatorul face clic pe un buton:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)rectBig.RenderTransform;
   3:              Matricea m = ct.Matrice;
   4:              m.OffsetX  = 10;
   5:              m.OffsetY  = 10;
   6:              CT.Matrice = m;
   7:              rectBig.RenderTransform = ct;

Truc aici este că nu puteţi schimba direct OffsetX sau OffsetY.  Poate exista un mod mai inteligent de a face acest lucru (şi dacă ştiţi şi simţiţi-vă ca, vă rugăm să postaţi în Comentarii). 

Pentru a face acest lucru, Am nevoie pentru a:

1. Ia MatrixTransform de dreptunghi (prin turnare RenderTransform).

2. Matricea de tipul ăla a lua.

3. Modificarea matricei compensează.

4. Reatribuiţi matricea înapoi la MatrixTransform.

5. Reatribuiţi MatrixTransform înapoi la dreptunghi.

Pentru a testa, Am pus un dreptunghi şi butonul ecran. Când fac clic pe butonul, logica de mai sus execută şi se deplasează dreptunghi imediat.

La un moment dat, Aş dori pentru a anima acest lucru, dar nu am nici o idee cum să obţineţi un DoubleAnimation lucru (Storyboard.SetTargetProperty() este un mister pentru mine pe acest timp fiind).

</scop>

undefinedAboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin

Stabilirea înălţimii ListboxItems înăuntru un listă programatic pentru App Windows Store

Sunt de lucru pe o aplicatie de windows magazin şi unul din lucrurile pe care vreau să fac în app este un jurnal care arată mesajele de stare şi alte sfaturi informaţională ca utilizator funcţionează lucrurile de afişare. În acest scop, Am adăugat o casetă listă după cum urmează:

<Casetă listă x:Nume ="GameStateLog" HorizontalAlignment ="Centrul" Inaltime ="221" VerticalAlignment ="Top" Latime ="499" Umplutură ="0" Dimensiune font ="10">

 

Codul C# pentru a completa integral caseta listă la runtime a fost de-a lungul liniilor de:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Noul joc de stat: aşteptare pentru player 1 nume");

Aceasta a lucrat bine suficient dar UI a arătat o cantitate nebun de umplutură în jurul mesaje individuale ca acestea au fost adăugate. Care are sens dacă vreau utilizatorilor finali pentru a selecta aceste elemente, dar nu face sens atunci când vreau doar să arate o serie curentă de jurnal mesaje-utilizatorii nu se va selecta acestea, doar le Vezi. A fost ciudat de greu a găsi o modalitate uşoară de a face acest lucru şi fără îndoială, modul în care am găsit-o nu este neapărat "uşor", dar am luat-o de lucru OK. Înţelegere cheie a venit de la această postare aici (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) la Bob Relyea. În loc de adăugarea siruri de caractere în colecţia de articole pe casetă de listare, Adauga ListBoxItems. Prin adăugarea un şir, caseta de listare permite a fost crearea propriile sale ListBoxItem pe cont propriu. Nu am fost capabil să afecteze nimic despre acest ListBoxItem după fapt. Noul cod este:

        privat nule AddGameStateLogMessage(şir theMessage)
        {
            ListBoxItem li = noi ListBoxItem();
            li.Conţinut = theMessage;
            li.MaxHeight = 25;

            Grosime thisPadding = noi Grosimea(5, 0, 5, 0);
            li.Umplutură = thisPadding;

            GameStateLog.Items.Insert(0,li);
        }

 

Aici eu sunt crearea de ListBoxItem pe şi inserarea lor. Am scos padding excesul de setarea grosimea.

Acest lucru este destul de flexibil ca intenţionez să fac unele de culoare de codificare pentru a evidenţia anumite tipuri de mesaje şi prin adăugarea direct ListBoxItems ajung să le stil orice fel vreau.

Sper că acest lucru vă ajută cineva!

</scop>

undefinedAboneaza-te la blog-ul meu.

Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin