maandelijkse archieven: April 2013

Snel en eenvoudig: Een rechthoek met behulp van C# In een App Store van Windows verplaatsen

Mijn algemene blog filosofie is dat het is perfect in orde om een blog over oude, geregeld onderwerpen die ter dood elders zijn behandeld.  Ik neem aan dat dit onderwerp is een van die, maar ik ben bloggen het toch.

Ik heb gewerkt aan een venster Opslag app en ik ben op het deel waar mij nood voor verrichten sommige animeren.  Te dien einde, Ik heb al uitzoeken bits en stukken van windows opgeslagen app animatie die, het blijkt dat, is heel dicht bij, maar niet precies zoals, XAML gebaseerd animaties in .NET (Ik ben nog steeds vat te krijgen op het feit dat WinRT <> .NET 🙂 ).

Vanmorgen ik wilde krijgen greep op slepen en neerzetten operaties.  Onderweg naar die, Ik kreeg verzanden in plaats daarvan een rechthoek verplaatsen :).  Hier is de code die een rechthoek wordt verplaatst wanneer de gebruiker op een knop klikt:

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

De truc hier is dat ik direct OffsetX of OffsetY niet wijzigen.  Kan er een meer slimme manier om dit te doen (en als u weet en voelt zoals, Gelieve te posten in de commentaren). 

Om dit te doen, Ik nodig om te:

1. Krijgen van de MatrixTransform van de rechthoek (door het gieten van RenderTransform).

2. Krijgen de Matrix van die kerel.

3. De Matrix offsets wijzigen.

4. Opnieuw toewijzen van de Matrix terug naar de MatrixTransform.

5. Opnieuw toewijzen van de MatrixTransform terug naar de rechthoek.

Om het te testen, Ik zette een rechthoek en het scherm knop. Wanneer ik klik op de knop, de bovenstaande logica voert en beweegt de rechthoek onmiddellijk.

Op een bepaald punt, Ik wil animatie toevoegen aan dit, maar ik heb geen idee hoe te krijgen een DoubleAnimation om te werken aan het (Storyboard.SetTargetProperty() wordt een mysterie voor me op dit voor de tijd).

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Instellen van de hoogte van ListboxItems In een ListBox via programmacode voor Windows opslag App

Ik ben bezig met een toepassing van de opslag van windows en een van de dingen die ik wil doen in de app is een logboek waarin statusberichten en andere informatieve lekkernijen als de gebruiker dingen werkt weergeven. Te dien einde, Ik voegde een ListBox als volgt:

<ListBox x:Naam ="GameStateLog" HorizontalAlignment ="Center" Hoogte ="221" VerticalAlignment ="Boven" Breedte ="499" Opvulling ="0" Tekengrootte (FontSize) ="10">

 

De C#-code om te vullen de listbox tijdens runtime was langs de lijnen van:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nieuwe spel staat: speler wacht 1 naam");

Dit werkte goed genoeg maar de UI toonde een gek bedrag van opvulling rond de afzonderlijke berichten zoals ze zijn toegevoegd. Dat is logisch als ik wil eind-de gebruikers kunnen om deze items te selecteren, maar houdt geen steek wanneer ik wil gewoon laten zien een lopende reeks van berichten in het logboek-gebruikers deze zal niet selecteren, alleen te bekijken. Het was vreemd moeilijk te vinden een eenvoudige manier om dit te doen en misschien wel, de manier waarop ik vond het niet noodzakelijkerwijs "gemakkelijk" maar ik heb het werkt OK. Het belangrijkste inzicht kwam uit dit bericht Hier (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) van Bob Relyea. In plaats van tekenreeksen toevoegen aan de Items-collectie op de ListBox, ListBoxItems toevoegen. Door het toevoegen van een string, ListBox was het creëren van zijn eigen ListBoxItem op eigen. Ik was niet in staat te beïnvloeden om het even wat over dat ListBoxItem na het feit. De nieuwe code is:

        privé VOID AddGameStateLogMessage(tekenreeks theMessage)
        {
            ListBoxItem li = Nieuw ListBoxItem();
            Li.Inhoud = theMessage;
            Li.MaxHeight = 25;

            Dikte thisPadding = Nieuw Dikte(5, 0, 5, 0);
            Li.Opvulling = thisPadding;

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

 

Hier ben ik het creëren van de ListBoxItem en het invoegen van hen. Ik verwijderde de overtollige opvulling door in te stellen de dikte.

Dit is vrij flexibel als ik denkt te doen wat kleur codering om te markeren van bepaalde soorten berichten en door direct toe te voegen ListBoxItems krijg ik om de stijl van hen elke gewenste.

Hoop dat dit helpt iemand!

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin