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

legg igjen et svar

e-postadressen din vil ikke offentliggjøres. Obligatoriske felt er merket *