Windows Phone 8中与分辨率相关的背景

时间:2013-11-11 10:17:13

标签: c# image xaml windows-phone-8 resolution

我正在关注this MSDN文章,以便在Windows Phone 8中创建与分辨率相关的背景,但它始终显示空白背景。

任何人都知道它有什么问题吗?有人有任何替代解决方案吗?

2 个答案:

答案 0 :(得分:1)

   public enum Resolutions { WVGA, WXGA, HD720p, HD };

    private static bool IsWvga
    {
        get
        {
            return App.Current.Host.Content.ScaleFactor == 100;
        }
    }

    private static bool IsWxga
    {
        get
        {
            return App.Current.Host.Content.ScaleFactor == 160;
        }
    }

    private static bool Is720p
    {
        get
        {
            return App.Current.Host.Content.ScaleFactor == 150;
        }
    }
    private static bool IsHD
    {
       get 
      { 
         return App.Current.Host.Content.ScaleFactor == 150; 
      }
    }

将其添加到类的顶部,并使用这些静态变量来设置特定于分辨率的图像。你说你想设置“依赖于分辨率的背景”,我从中了解你想要在背景上设置一些图像?如果您希望图片显示在页面背景中,请将ImageBrush网格的LayoutRoot设置为特定分辨率图像(480x800.jpg,720x1280.jpg等)

        ImageBrush image = new ImageBrush();
        if (IsWvga)
        {
            //set your bitmap
        }
        else if (IsWxga)
        {
            //set your bitmap
        }
        else if (Is720p)
        {
            //set your bitmap
        }
        else if(IsHD)
        {
           //set your bitmap
        }
        image.Stretch = Stretch.UniformToFill;

        LayoutRoot.Background = image;

OR

如果您希望屏幕UI元素符合分辨率,则在XAML中将UI元素的height设置为auto,或者在{{上设置UI元素的分辨率特定高度1}}您的网页事件。这可能是您的页面的任何随机网格,需要适合

OnNavigatedTo

答案 1 :(得分:0)

MSDN文章在MultiResImageChooser课程中出错,MultiResImageChooser被写为MultiResImageChooserUri&相对URI缺少前导斜杠。正确的课程如下。

public class MultiResImageChooser
{
    public Uri BestResolutionImage
    {
        get
        {
            switch (ResolutionHelper.CurrentResolution)
            {
                case Resolutions.HD:
                    return new Uri("/Assets/MyImage.screen-720p.jpg", UriKind.Relative);
                case Resolutions.WXGA:
                    return new Uri("/Assets/MyImage.screen-wxga.jpg", UriKind.Relative);
                case Resolutions.WVGA:
                    return new Uri("/Assets/MyImage.screen-wvga.jpg", UriKind.Relative);
                default:
                    throw new InvalidOperationException("Unknown resolution type");
            }
        }
    }
}