Windows 10 UWP中的扩展闪屏?

时间:2017-01-09 11:58:13

标签: c# uwp windows-10 splash-screen

我使用以下Windows 10 UWPXAML代码为C#应用创建了扩展启动画面。

XAML代码

<Grid Background="#036E55">
    <Canvas>
        <Image x:Name="extendedSplashImage" Source="Assets/620.scale-200.png"/>
    </Canvas>

    <ProgressRing Name="splashProgressRing" 
                  IsActive="True" 
                  Width="20" 
                  Height="20"
                  HorizontalAlignment="Center"
                  VerticalAlignment="Bottom"
                  Foreground="White"
                  Margin="20">
    </ProgressRing>
</Grid>

C#代码

internal Rect splashImageRect;
    private SplashScreen splash;
    internal bool dismissed = true;
    internal Frame rootFrame;
    private double ScaleFactor;
    ApplicationDataContainer userSettings = ApplicationData.Current.LocalSettings;
    JsonDataHandler dataHandler;
    //bool isZipUpdateInProgress = false;

    public ExtendedSplashScreen(SplashScreen splashscreen, bool loadState)
    {
        this.InitializeComponent();
        Window.Current.SizeChanged += new WindowSizeChangedEventHandler(ExtendedSplash_OnResize);
        ScaleFactor = (double)DisplayInformation.GetForCurrentView().ResolutionScale/100;
        //System.Diagnostics.Debug.WriteLine("ScaleFactor - " + ScaleFactor + "/n");
        splash = splashscreen;
        if (splash != null)
        {
            splash.Dismissed += new TypedEventHandler<SplashScreen, Object>(DismissedEventHandler);

            splashImageRect = splash.ImageLocation;
            PositionImage();
            //PositionRing();
        }
        rootFrame = new Frame();
    }

    void PositionImage()
    {
        extendedSplashImage.SetValue(Canvas.LeftProperty, splashImageRect.X);
        extendedSplashImage.SetValue(Canvas.TopProperty, splashImageRect.Y);
        extendedSplashImage.Height = splashImageRect.Height / ScaleFactor;
        extendedSplashImage.Width = splashImageRect.Width / ScaleFactor;

    }


    void PositionRing()
    {
        splashProgressRing.SetValue(Canvas.LeftProperty, splashImageRect.X + (splashImageRect.Width * 0.5) - (splashProgressRing.Width * 0.5));
        splashProgressRing.SetValue(Canvas.TopProperty, (splashImageRect.Y + splashImageRect.Height + splashImageRect.Height * 0.1));
    }

void ExtendedSplash_OnResize(Object sender, WindowSizeChangedEventArgs e)
    {
        // Safely update the extended splash screen image coordinates. This function will be executed when a user resizes the window.
        if (splash != null)
        {
            // Update the coordinates of the splash screen image.
            splashImageRect = splash.ImageLocation;
            PositionImage();

            // If applicable, include a method for positioning a progress control.
            PositionRing();
        }
    }

现在,如果我保持旋转模式,它可以正常工作,但当我关闭它时,如果我将屏幕旋转到横向模式,那么徽标会有所不同。我正在使用620x300图片。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用此代码,它可以帮助您获得所需的结果,首先删除所有定位图像代码,然后只尝试使用此

Error in plugin 'less'
Message:
    error evaluating function `image-size`: Invalid JPG, marker table corrupted
Details:
    type: Runtime

Image和ProgressRing将通过StackPanel在屏幕中心进行管理,而Image也不会有所不同。希望它会对你有所帮助。