Månedlige Arkiver: April 2013

Rask og enkel: Flytte et rektangel ved hjelp av C# i en Windows-Store App

Min blogg filosofi er at det er helt greit å blogg om gamle, avgjort temaer som har vært dekket i hjel andre steder.  Jeg antar at dette emnet er en av de, men jeg er blogging det likevel.

Jeg har jobbet på et vindu Forretning app og jeg er på delen der jeg trenger å gjøre noen animere.  Dette, Jeg har vært å finne ut biter og stykker av windows lagrer app animasjon som, Det viser seg, er ganske nær, men ikke akkurat som, XAML basert animasjoner i .NET (Jeg fortsatt kommer til tak med faktum at WinRT <> .NET 🙂 ).

Denne morgenen jeg ønsket å få et håndtak på dra og slipp-operasjoner.  En rute som, Jeg fikk overbelastes flytte et rektangel i stedet :).  Her er koden som flytter et rektangel når brukeren klikker en knapp:

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

Trikset her er at jeg ikke kan direkte endre OffsetX eller OffsetY.  Det kan være en mer smart måte å gjøre dette (og hvis du vet og føler som, Vennligst skriv i kommentarer). 

For å gjøre dette, Jeg trenger å:

1. Få MatrixTransform av rektangelet (ved å kaste RenderTransform).

2. Få matrisen fyren.

3. Endre the Matrix forskyvninger.

4. Tilordne matrisen tilbake til MatrixTransform.

5. Tilordne MatrixTransform til rektangelet.

Å teste den, Jeg satte et rektangel og knappen skjermen. Når jeg klikker knappen, over logikken utfører og flytter rektangelet umiddelbart.

På et tidspunkt, Jeg ønsker å animere dette men jeg aner ikke hvordan du får en DoubleAnimation å arbeide med den (Storyboard.SetTargetProperty() blir et mysterium for meg på dette for gang).

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Angi høyden på ListboxItems i en liste programmatisk for Windows forretning App

Jeg jobber med en windows-butikk-program og en av tingene jeg ønsker å gjøre i programmet er å vise en logg som viser statusmeldinger og andre informativ ting som brukeren arbeider ting. Dette, Jeg har lagt en liste som følger:

<ListBox x:Navnet ="GameStateLog" HorizontalAlignment ="Center" Høyde ="221" VerticalAlignment ="Toppen" Bredde ="499" Polstring ="0" FontSize ="10">

 

C#-kode til å fylle ut liste under kjøring var langs linjene av:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nye spillet staten: venter på spilleren 1 navn");

Dette virket helt fint nok men UI viste en gal mengde utfylling rundt den enkelte meldinger som de ble lagt til. Det er fornuftig hvis jeg sluttbrukerne skal kunne velge men ikke gir mening når jeg vil bare vise en løpende serie med loggmeldingene-brukere vil merke dette, bare se dem. Det var merkelig vanskelig å finne en enkel måte å gjøre dette og kanskje, måten jeg fant det er ikke nødvendigvis "lett", men jeg fikk den arbeider OK. Viktig innsikt kom fra dette oppslaget her (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) fra Bob Relyea. I stedet for strenger å elementsamlingen på liste, legge til ListBoxItems. Ved å legge til en streng, Listen var å skape sin egen ListBoxItem på egen hånd. Jeg var ikke i stand til å påvirke noe om at ListBoxItem i ettertid. Den nye koden er:

        privat ugyldige AddGameStateLogMessage(streng theMessage)
        {
            ListBoxItem li = nye ListBoxItem();
            Li.Innhold = theMessage;
            Li.MaxHeight = 25;

            Tykkelse thisPadding = nye Tykkelsen(5, 0, 5, 0);
            Li.Utfylling = thisPadding;

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

 

Her jeg oppretter Listboxitems og sette dem. Jeg fjernet overflødig utfyllingen ved å angi tykkelse.

Dette er ganske fleksibel som jeg har tenkt å gjøre noen fargekoding for å utheve bestemte typer meldinger og direkte legge ListBoxItems jeg kommer til stil dem slik jeg ønsker.

Håpe dette hjelper noen!

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin