private async Task InitControl() { // // Create the sperical normal map. The normals will give the appearance of a sphere, and the alpha channel is used // for masking off the rectangular edges. // //CompositionDrawingSurface normalMap = await SurfaceLoader.LoadFromUri(new Uri("ms-appx:///X.UI.Composition.Assets/SphericalWithMask.png")); CompositionDrawingSurface normalMap = await SurfaceLoader.LoadFromUri(new Uri("ms-appx:///X.UI.Composition.Assets/BeveledEdges.jpg")); _circleNormalsBrush = _compositor.CreateSurfaceBrush(normalMap); _circleNormalsBrush.Stretch = CompositionStretch.Fill; // // Create the flat normal map with beveled edges. This should give the appearance of slanting of the surface along // the edges, flat in the middle. // normalMap = await SurfaceLoader.LoadFromUri(new Uri("ms-appx:///X.UI.Composition.Assets/BeveledEdges.jpg")); _flatNormalsBrush = _compositor.CreateSurfaceBrush(normalMap); _flatNormalsBrush.Stretch = CompositionStretch.Fill; // Update the effect brushes now that the normal maps are available. UpdateEffectBrush(); }
private async void LoadSurface() { // If we're clearing out the content, return if (_uri == null) { ReleaseSurface(); return; } try { // Start a timer to enable the placeholder image if requested if (_surface == null && _placeholderDelay >= TimeSpan.Zero) { _timer = new DispatcherTimer(); _timer.Interval = _placeholderDelay; _timer.Tick += Timer_Tick; _timer.Start(); } // Load the image asynchronously CompositionDrawingSurface surface = await SurfaceLoader.LoadFromUri(_uri, Size.Empty, _loadEffectDelegate); if (_surface != null) { ReleaseSurface(); } _surface = surface; // The surface has changed, so we need to re-measure with the new surface dimensions InvalidateMeasure(); // Async operations may take a while. If we've unloaded, return now. if (_unloaded) { ReleaseSurface(); return; } // Update the brush UpdateBrush(); // Success, fire the Opened event if (ImageOpened != null) { ImageOpened(this, null); } // // If we created the loading placeholder, now that the image has loaded // cross-fade it out. // if (_sprite != null && _sprite.Children.Count > 0) { Debug.Assert(_timer == null); StartCrossFade(); } else if (_timer != null) { // We didn't end up loading the placeholder, so just stop the timer _timer.Stop(); _timer = null; } } catch (FileNotFoundException) { if (ImageFailed != null) { ImageFailed(this, null); } } }