ארכיון חודשי: באפריל 2013

מהיר וקל: להעביר מלבן באמצעות C # ב- App Windows Store

הפילוסופיה שלי-בלוג הכללית היא שזה גמור לבלוג על הישן, התיישבו נושאים להיות מכוסה עד מוות במקום אחר.  אני מניח שנושא זה הוא אחד מאלה, אבל אני לבלוגים זה בכל מקרה.

אני עובד ב- app store חלון, ואני חלק איפה אני צריכה לעשות כמה הנפשה.  למטרה זו, ניסיתי למצוא את הסיביות ולאחסן חתיכות של windows app הנפשה אשר, כפי שמסתבר, הוא די קרוב, אבל לא בדיוק כמו, אנימציות XAML מבוסס ב- .NET (אני עדיין בא להתמודד עם העובדה הזאת WinRT <> .NET 🙂 ).

הבוקר אני רוצה להשתלט על גרור ושחרר פעולות.  בדרך לזה, יש המקראיים נע מלבן במקום :).  . הנה הקוד אשר נע מלבן כאשר המשתמש לוחץ על לחצן:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)rectBig.RenderTransform;
   3:              Matrix m = ct.מטריקס;
   4:              m.OffsetX   = 10;
   5:              m.OffsetY   = 10;
   6:              ct.מטריקס = m;
   7:              rectBig.RenderTransform = ct;

החוכמה כאן היא כי אין אפשרות לשנות ישירות OffsetX או OffsetY.  אולי יש דרך יותר חכמים לעשות את זה (אם אתה יודע ולהרגיש כמו, נא לכתוב את התגובות). 

כדי לעשות זאת, . אני צריך:

1. לקבל את MatrixTransform של המלבן (ליהקנו RenderTransform).

2. להביא את המטריצה של הבחור הזה.

3. לשנות קיזוז של המטריקס.

4. הקצאה מחדש של המטריקס לחזור MatrixTransform.

5. הקצה מחדש את MatrixTransform בחזרה אל המלבן.

כדי לבדוק את זה, אני שים ריבוע, כפתור על המסך. כאשר אני לחץ על הכפתור, הלוגיקה לעיל ביצוע ומעבירה את המלבן מיד.

בשלב מסוים, כדי להנפיש את זה אבל אין לי מושג איך להשיג את DoubleAnimation לעבוד על זה (Storyboard.SetTargetProperty() זה להיות תעלומה בשבילי על זה הפעם).

</קצה>

undefinedמנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

הגדרת גובה ListboxItems רשימה באופן תוכניתי עבור Windows בחנות App

. אני עובד על יישום חנות windows וזה אחד הדברים שאני רוצה לעשות ב- app להציג יומן מציגה הודעות מצב, tidbits מידע אחרים כמו המשתמש עובד דברים. למטרה זו, הוספתי רשימה כדלקמן:

<הרשימה x:שם ="GameStateLog" HorizontalAlignment ="מרכז" גובה ="221" VerticalAlignment ="העליון" רוחב ="499" ריפוד ="0" גודל ="10">

 

קוד C# לאכלוס הרשימה בזמן ריצה הייתה בכיוון של:

GameStateLog.Items.Insert(0, GameStateCounter     + ": מצב משחק חדש: מחכה לשחקן 1 שם");

זה עבד בסדר מספיק אבל ממשק המשתמש הראו בכמות מטורפת של ריפוד מסביב הודעות בודדות בעת הוספתם. זה הגיוני אם אני רוצה משתמשי קצה היכולת לבחור פריטים אלה, אבל זה לא יהיה הגיוני. אני רק רוצה להראות סדרת הודעות יומן הריצה – משתמשים לא לבחור את אלה, רק להציגם. . זה היה מוזר שקשה למצוא דרך קלה לעשות את זה, וללא ספק., הדרך מצאתי את זה לא בהכרח "קל" אבל לי זה עובד בסדר. התובנה מפתח בא פרסום זה כאן (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) של בוב Relyea. במקום להוסיף מחרוזות לאוסף הפריטים על הרשימה, הוספת ListBoxItems. על-ידי הוספת מחרוזת, תיבת הרשימה הייתה יצירת משלו ListBoxItem בכוחות עצמו. לא הייתי מסוגל להשפיע על משהו על זה ListBoxItem לאחר מעשה. הקוד החדש הוא:

        פרטי void AddGameStateLogMessage(מחרוזת הודעה משפיעות)
        {
            ListBoxItem li = חדש ListBoxItem();
            li.תוכן = הודעה משפיעות;
            li.MaxHeight = 25;

            עובי thisPadding = חדש עובי(5, 0, 5, 0);
            li.ריפוד = thisPadding;

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

 

כאן אני יוצר של ListBoxItem והכנסת אותם. הסרתי את הריפוד עודף על-ידי הגדרת את עוביו.

. זה די גמיש כמו שאני מתכוון לעשות קצת צבע קידוד כדי לסמן סוגים מסוימים של הודעות על-ידי הוספת ישירות ListBoxItems אני מקבל סגנון אותם בכל דרך שארצה.

מקווה שזה עוזר למישהו!

</קצה>

undefinedמנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin