【问题标题】:WP7 Silverlight App Scalability ScalabilityWP7 Silverlight 应用程序可扩展性
【发布时间】:2011-03-28 18:17:50
【问题描述】:

我现在正在编写一些需要绝对大小的 WP7 应用程序,具体取决于显示设备。这意味着应用程序大小需要为 656 (w) x 480 (h),这对于带有 shell:SystemTray.IsVisible="True"shell:ApplicationBar IsVisible="True" 的 WP7 来说是完美的。从可能的 800 x 480 开始,使用的两个条都需要 144,所以我在这方面做得很好。

在 PC 上,我会根据需要使用更大的版本,例如 720x540。

但是,如果 iPhone->iPad 表明 MSFT 可能的收入来源(以及鲍尔默对平板电脑业务的再投资),我将假设我们将看到平板电脑大小WP7 操作系统的单元很快就会问世。

另外,可能会有 400x240 分辨率的 WP7 出来。

我希望我的应用能够立即用于不同尺寸的设备,基于上述尺寸(656(宽)乘 480(高),或该尺寸的缩放版本)——而不是仅仅更改一组值以重新发布应用程序。 注意:我不使用 <Grid/><StackPanel/> - 我不能。应用程序中的每一件事都是绝对定位的,这是故意的。

所以这里的问题是 - 我是否可以阅读有关运行我的应用程序的设备的屏幕分辨率大小的一些值?我已经查看了 reference,但无法找不到类似的东西。

【问题讨论】:

    标签: silverlight windows-phone-7


    【解决方案1】:

    您可以通过以下方式确定可用的显示尺寸:-

    var width = Application.Current.Host.Content.ActualWidth;
    var height = Application.Current.Host.Content.ActualHeight;
    

    尽管有方向,但它们保持不变。使用 RootVisual 的尺寸可能也可以,但如果出于奇怪的原因 RootVisual 具有固定大小,那么这将不起作用。

    上面的ActualWidthActualHeight 属性专门用于通知应用程序主机设备提供的视口大小。

    【讨论】:

      【解决方案2】:

      据我所知,平板电脑(Slate)风格的设备将运行完整版的 Windows 7(不是 Windows Phone 7),但在顶部有一个额外的软件层,以便在 Slate 环境中更好/更简单/更容易地使用。

      WP7 设备将配备 HVGA 屏幕 (480x320),Microsoft 已明确表示将来不会有任何其他尺寸。 (他们吸取了尝试支持多种屏幕尺寸的教训。)这意味着您无需担心 400x240。

      回答您的实际问题:
      你可以通过访问RootVisualRenderSize来获取屏幕的大小,像这样:

      var size = App.Current.RootVisual.RenderSize;
      
      var msg = string.Format("Height: {0}\r\nWidth: {1}", size.Height, size.Width);
      
      MessageBox.Show(msg, "size", MessageBoxButton.OK);
      

      如果设备被旋转,它仍然会给出纵向的尺寸。

      请注意。这是基于我在模拟器中的测试而不是在具有不同尺寸屏幕的不同设备上测试的。

      【讨论】:

        【解决方案3】:

        这可以通过使用您喜欢的大小的画布来实现,然后通过更改 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-25
          • 2011-05-29
          • 1970-01-01
          • 2014-09-13
          • 2014-12-28
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多