2010-04-08 32 views
18

Làm cách nào để tôi có được độ phân giải màn hình trên WP7? Dưới đây là một loạt các liên kết có được cùng một công việc được thực hiện trong WPF và Silverlight trên máy tính để bàn, nhưng không có liên kết nào trong số đó nằm trong SDK điện thoại.Cách nhận kích thước màn hình trên Windows Phone 7 Series?

Bất kỳ ý tưởng nào?

http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/f0639904-a368-44db-9ddd-efcaf8fc736e
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6b6b832f-0dfd-428c-84cd-b1b9e7f236cf
How can I get the active screen dimensions?
http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/f0639904-a368-44db-9ddd-efcaf8fc736e

+0

Bạn có một trong những điện thoại này? Wow - Tôi không biết họ có sẵn cho bất kỳ ai để phát triển với họ chưa. –

+0

Không, chỉ giả lập: ( –

Trả lời

14

Dường như Application.Current.RootVisual.RenderSize sẽ cung cấp cho bạn thông tin đó.

+0

Điều này chắc chắn hoạt động, cảm ơn. –

+0

Tiện dụng để biết mặc dù sẽ có hai độ phân giải cho Windows Phone 7 (480 × 800) và (320 × 480) chúng không có tỷ lệ khung hình tương tự, mà tôi đoán là lý do cho câu hỏi. – RoguePlanetoid

+7

Vui lòng xem câu trả lời của Luke Puplett bên dưới nếu bạn đang cố gắng làm điều này. RootVisual.RenderSize không có khả năng cung cấp cho bạn chính xác những gì bạn muốn. – jeffa00

1

Toàn bộ màn hình:

(App.Current.RootVisual as FrameworkElement).ActualHeight 
(App.Current.RootVisual as FrameworkElement).ActualWidth 

Trang hiện tại:

Nếu bạn muốn biết kích thước có thể nhìn thấy (có tính AppBar/SystemTray vào tài khoản) sau đó chỉ cần yêu cầu đó khỏi trang để thay thế.

66

tôi sử dụng này:

this.ScreenWidth = System.Windows.Application.Current.Host.Content.ActualWidth; 
this.ScreenHeight = System.Windows.Application.Current.Host.Content.ActualHeight; 

Nhiều cách để da một ứng dụng. Nếu nó cho XAML, bạn có thể liên kết với các thuộc tính của LayoutRoot.

Height="{Binding ElementName=LayoutRoot,Path=ActualHeight}" 
+2

Đây là câu trả lời hay hơn. Như Quetzlcoatl chỉ ra câu trả lời được chấp nhận có vấn đề. – jeffa00

+0

Câu trả lời này tốt hơn. Sử dụng phương pháp này bạn cũng có thể nhận được kích thước màn hình trong hàm tạo. Sử dụng câu trả lời được chấp nhận, tôi có ngoại lệ tham chiếu null. – Daan

+0

Và nó cũng hoạt động trên WP8. – KristianB

8

tôi không thể xuống/upvote chưa (trên thực tế, bây giờ tôi có thể và tôi đã làm như vậy), nhưng tôi muốn chỉ ra rằng "Luke Puplett" s câu trả lời bao gồm Application.Current.Host .Content là đúng, không phải "Andréas Saudemont" của một trong đó tư vấn cho RenderSize.

Tôi sẽ sử dụng tên thường được sử dụng trong hướng dẫn hoặc ứng dụng mẫu từ MSDN.

Tôi nói rằng Host.Current là đầy đủ hơn, bởi vì trên rất rất bắt đầu của ứng dụng, đặc biệt là trên WP7 (Tôi không biết làm thế nào nó là trên "thường xuyên" SL3/SL4 trên PC) - có nghĩa là, cho ví dụ, trong hàm tạo của trang đầu tiên - thuộc tính RenderSize KHÔNG được đặt đúng, vì "RootVisual" của ứng dụng đang được xây dựng và chưa được gán trong "App.xaml.cs". Ít nhất trong một điểm đó, RenderSize = Size {0,0}

Mặt khác, nếu chỉ ứng dụng khởi động chính xác, Host.Content được đặt thành một số khung hình điện thoại, chính xác là toàn màn hình. và xoay đến vị trí màn hình thực tế. Tôi đoán rằng trên rất bắt đầu nó là màn hình giật gân bắt đầu (trống hoặc tĩnh từ file JPG)

4

Nếu bạn muốn truy cập vào kích thước màn hình từ bên trong một trò chơi XNA, sử dụng này:

graphics.GraphicsDevice.DisplayMode.Width 

graphics.GraphicsDevice.DisplayMode.Height 

nơi đồ họa là GraphicDeviceManager của trò chơi hiện tại!

Các vấn đề liên quan