我现在正在编写一些需要绝对大小的WP7应用程序,具体取决于显示设备。这意味着应用程序大小需要为656(w)×480(h),这对于同时具有shell:SystemTray.IsVisible="True"
和shell:ApplicationBar IsVisible="True"
的WP7来说是完美的。从可能的800 x 480开始,这两个使用的棒都需要144个,所以我在这方面做得很好。
在PC上,我会使用更大尺寸的版本,例如720x540。
然而,如果iPhone-> iPad显示出MSFT可能的收入来源(以及鲍尔默重新投资平板电脑业务),我将假设我们会看到平板电脑 - 大小的单位很快就会出现在WP7操作系统中。
此外,WP7的分辨率可能会达到400x240。
我希望我的应用程序能够立即用于不同尺寸的设备,基于上述尺寸(656(w)乘480(h)或其缩放版本) - 而不是仅仅是更改一组值以重新发布应用。 注意:我不使用<Grid/>
或<StackPanel/>
- 我不能。应用程序中的每一件事都是绝对定位的,这是有目的的。
所以这里的问题是 - 是否有一些值,我可以阅读有关我的应用运行的设备的屏幕分辨率大小?我查看了reference,但是找不到这样的东西。
答案 0 :(得分:7)
您可以通过以下方式确定可用的显示尺寸: -
var width = Application.Current.Host.Content.ActualWidth;
var height = Application.Current.Host.Content.ActualHeight;
尽管取向如此,但仍保持不变。使用RootVisual
的维度可能也会起作用,但如果出于商业原因,RootVisual具有固定大小,那么这将无效。
上面的ActualWidth
和ActualHeight
属性专门用于通知应用程序主机设备提供的视口大小。
答案 1 :(得分:3)
据我所知,平板电脑(平板)风格的设备将运行完整版的Windows 7(不是Windows Phone 7),但在顶部有一个附加软件层,可以在平板环境中更好/更简单/更容易地使用。
WP7设备将推出HVGA屏幕(480x320),微软已明确表示将来不会有任何其他尺寸。 (他们已经学会了尝试支持多种屏幕尺寸的教训。)这意味着您无需担心400x240。
回答你的实际问题:
您可以访问RenderSize
的{{1}}来获取屏幕大小,如下所示:
RootVisual
如果旋转设备,它仍然会从纵向显示尺寸。
请注意。这是基于我在模拟器和测试器中的测试。未在具有不同尺寸屏幕的不同设备上进行测试。
答案 2 :(得分:1)
可以通过使用您喜欢的尺寸的Canvas,然后通过更改ScaleX和ScaleY的值来应用缩放。最好的方法是使用数据绑定到运行时计算的属性。但请记住,您可能会保持正确的比例,因此将X和Y缩放相同的量。当该值小于1时,它将缩小,当值大于1时,它将向上扩展。还要记住,基于像素的stuf将变得更像像素化。
<Canvas x:Name="canvas" Background="#FFFFFFFF" Width="656" Height="480">
<Canvas.RenderTransform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</Canvas.RenderTransform>
<Button Content="OK"/>
</Canvas>