lưu trữ hàng tháng: Tháng tư 2013

Nhanh chóng và dễ dàng: Di chuyển một hình chữ nhật bằng cách sử dụng C# trong một ứng dụng Windows cửa hàng

Triết lý blog tổng thể của tôi là nó hoàn toàn tốt đẹp để blog về cũ, định cư đối tượng đã được đề cập đến chết ở những nơi khác.  Tôi giả định chủ đề này là một trong những, nhưng tôi viết blog nó anyway.

Tôi đã làm việc trên một cửa sổ cửa hàng ứng dụng và tôi là một phần nơi tôi cần phải làm một số animating.  Để kết thúc này, Tôi đã tìm hiểu bit và phần của windows lưu trữ hình ảnh động ứng dụng đó, vì nó biến ra, là khá gần gũi với, nhưng không chính xác như, XAML dựa trên hình ảnh động trong .NET (Tôi vẫn còn đến GRIPS với thực tế rằng WinRT <> .NET 🙂 ).

Sáng nay tôi muốn để có được một xử lý trên kéo và thả các hoạt động.  Trên đường đi đến đó, Tôi nhận được bogged xuống di chuyển một hình chữ nhật để thay thế :).  Đây là mã di chuyển một hình chữ nhật khi người dùng nhấp vào một nút:

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

The trick ở đây là rằng tôi không thể trực tiếp thay đổi OffsetX hoặc OffsetY.  Có thể có một cách thông minh hơn để làm điều này (và nếu bạn biết và cảm thấy như, Xin vui lòng gửi trong các ý kiến). 

Để làm điều này, Tôi cần phải:

1. Nhận được MatrixTransform của các hình chữ nhật (bởi đúc RenderTransform).

2. Nhận được ma trận của gã.

3. Thay đổi của ma trận offsets.

4. Gán ma trận trở lại để MatrixTransform.

5. Gán MatrixTransform quay lại các hình chữ nhật.

Để kiểm tra nó, Tôi đặt một hình chữ nhật và nút màn hình. Khi tôi nhấp vào nút, logic trên thực hiện và di chuyển các hình chữ nhật ngay lập tức.

Tại một số điểm, Tôi thích để animate này nhưng tôi không có ý tưởng làm thế nào để có được một DoubleAnimation để làm việc trên nó (Storyboard.SetTargetProperty() một bí ẩn với tôi về điều này cho thời gian không).

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Thiết lập chiều cao của ListboxItems trong một ListBox lập trình cho các ứng dụng Windows cửa hàng

Tôi đang làm việc trên một cửa sổ cửa hàng ứng dụng và một trong những điều tôi muốn làm trong các ứng dụng là hiển thị một bản ghi Hiển thị thông điệp trạng thái và rẻ quạt thông tin khác khi người dùng hoạt động điều. Để kết thúc này, Tôi thêm một ListBox như sau:

<ListBox x:Tên ="GameStateLog" HorizontalAlignment ="Trung tâm" Chiều cao ="221" VerticalAlignment ="Đầu trang" Chiều rộng ="499" Đệm ="0" FontSize ="10">

 

C# mã cư listbox tại thời gian chạy dọc theo dòng:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nước trò chơi mới: chờ đợi cho cầu thủ 1 Tên");

Điều này làm việc ra tốt đẹp đủ nhưng giao diện cho thấy một số tiền điên của padding xung quanh các tin nhắn cá nhân như họ đã được thêm vào. Có ý nghĩa nếu tôi muốn người dùng cuối có thể chọn những mục này nhưng không làm cho tinh thần khi tôi chỉ muốn hiển thị một loạt chạy các thông điệp ghi-người dùng sẽ không chọn các, chỉ cần xem chúng. Đó là kỳ lạ khó để tìm một cách dễ dàng để làm điều này và cho là, cách tôi tìm thấy nó không phải là nhất thiết phải "dễ dàng" nhưng tôi đã nhận nó làm việc OK. Sự thấu hiểu chính đến từ bài này Ở đây (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) từ Bob Relyea. Thay vì thêm dây cho việc thu thập các mục trên ListBox, Thêm ListBoxItems. Bằng cách thêm một chuỗi, ListBox đã tạo ra ListBoxItem của riêng của nó ngày của riêng mình. Tôi đã không thể ảnh hưởng đến bất cứ điều gì về ListBoxItem đó thực tế. Mã mới là:

        tư nhân void AddGameStateLogMessage(chuỗi theMessage)
        {
            ListBoxItem li = mới ListBoxItem();
            Li.Nội dung = theMessage;
            con số khôngMaxHeight = 25;

            Độ dày thisPadding = mới Độ dày(5, 0, 5, 0);
            con số khôngĐệm = thisPadding;

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

 

Ở đây tôi là tạo ra của ListBoxItem và chèn chúng. Tôi gỡ bỏ padding dư thừa bằng cách đặt độ dày của nó.

Điều này là khá linh hoạt như tôi có ý định làm một số màu sắc mã hóa để làm nổi bật đặc biệt các loại tin nhắn và bằng trực tiếp thêm ListBoxItems tôi nhận được phong cách họ bất kỳ cách nào tôi muốn.

Hy vọng điều này sẽ giúp người nào đó!

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin