Arkib Bulanan: April 2013

Pantas dan Mudah: Bergerak Rectangle Menggunakan C # Dalam Windows App Store

Falsafah blog saya secara keseluruhan adalah bahawa ia adalah betul-betul halus untuk blog tentang lama, diselesaikan mata pelajaran yang telah ditutup untuk mati di tempat lain.  Saya menganggap topik ini adalah salah seorang daripada mereka, tetapi saya menulis blog teruskan.

Saya telah bekerja di sebuah kedai aplikasi tingkap dan saya di bahagian mana saya perlu melakukan beberapa animasi.  Untuk tujuan ini, Saya telah memikirkan bit dan keping tingkap kedai aplikasi animasi yang, kerana ia ternyata, agak dekat dengan, tetapi tidak sama seperti, XAML berdasarkan animasi dalam. BERSIH (Saya masih datang ke genggaman dengan hakikat bahawa WinRT <> .NET 🙂 ).

Pagi ini saya ingin mendapatkan mengendalikan operasi seret dan lepaskan.  Perjalanan dengan, Saya mendapat sibuk bergerak persegi panjang dan bukannya :).  Berikut adalah kod yang bergerak segiempat tepat apabila pengguna klik butang:

   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;

Silap mata di sini adalah bahawa saya tidak boleh terus menukar OffsetX atau OffsetY.  Mungkin ada cara yang lebih bijak untuk berbuat demikian (dan jika anda tahu dan merasa seperti, sila pos dalam komen). 

Dalam usaha untuk melakukan ini, Saya perlu:

1. Dapatkan MatrixTransform segi empat (oleh pemutus RenderTransform).

2. Dapatkan Matrix lelaki yang.

3. Perubahan ofset Matrix ini.

4. Menyerahhakkan semula Matrix kembali ke MatrixTransform yang.

5. Menyerahhakkan semula kembali MatrixTransform untuk Persegi.

Untuk menguji, Saya meletakkan segi empat dan butang skrin. Apabila saya klik butang, logik di atas melaksanakan dan bergerak persegi panjang dengan segera.

Pada satu ketika, Saya ingin bernyawa ini tetapi saya tidak mempunyai idea bagaimana untuk mendapatkan DoubleAnimation untuk bekerja di atasnya (Storyboard.SetTargetProperty() adalah satu misteri kepada saya mengenai perkara ini pada masa itu).

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Menetapkan Ketinggian ListboxItems Dalam ListBox a programatik untuk Windows App Store

Saya bekerja pada sebuah tingkap kedai aplikasi dan salah satu daripada perkara-perkara yang saya ingin lakukan dalam aplikasi memaparkan log yang menunjukkan mesej status dan perkara maklumat lain seperti kerja-kerja pengguna perkara-perkara. Untuk tujuan ini, Saya menambah ListBox sebagai berikut:

<ListBox x:Nama ="GameStateLog" HorizontalAlignment ="Pusat" Ketinggian ="221" VerticalAlignment ="Top" Lebar ="499" Padding ="0" FontSize ="10">

 

C # kod untuk mengisi listbox di runtime adalah sepanjang garis:

GameStateLog.Items.Insert(0, GameStateCounter     + ": Negeri permainan baru: menunggu bagi pemain 1 Nama");

Ini bekerja denda cukup tetapi UI menunjukkan sejumlah gila pad sekitar mesej individu kerana mereka telah ditambah. Yang masuk akal jika saya mahu pengguna akhir untuk dapat memilih barang-barang tetapi tidak masuk akal apabila saya hanya mahu menunjukkan siri berjalan mesej log - pengguna tidak akan memilih ini, hanya melihat mereka. Ia adalah pelik sukar untuk mencari cara yang mudah untuk melakukan ini dan boleh dikatakan, cara yang saya dapati ia tidak semestinya "mudah" tetapi saya dapat bekerja OK. Wawasan utama datang dari posting ini di sini (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) dari Bob Relyea. Sebaliknya menambah tali untuk koleksi Item pada ListBox, Tambah ListBoxItems. Dengan menambah rentetan, ListBox yang mencipta sendiri ListBoxItem sendiri. Saya tidak mampu menjejaskan apa-apa mengenai ListBoxItem itu selepas fakta. Kod baru:

        swasta membatalkan AddGameStateLogMessage(rentetan theMessage)
        {
            ListBoxItem yang = baru ListBoxItem();
            li.Content = theMessage;
            li.MaxHeight = 25;

            Ketebalan thisPadding = baru Ketebalan(5, 0, 5, 0);
            li.Padding = thisPadding;

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

 

Di sini saya membuat ListBoxItem's dan memasukkan mereka. Saya dibuang padding yang berlebihan dengan menetapkan ketebalan.

Ini adalah agak fleksibel kerana saya bercadang untuk melakukan beberapa kod warna untuk menyerlahkan jenis tertentu mesej dan dengan terus menambah ListBoxItems saya dapat gaya mereka apa-apa cara yang saya mahu.

Harap ini membantu seseorang!

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin