private void ShootSnapshot(BoundingBox boundingBox, Route route, int width, int height, int scale, string fileName) { var imageFilePath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Familie Wandel Pad", "MapImages", $"{fileName}.png" ); using var fileStream = new FileStream(imageFilePath, FileMode.Create, FileAccess.Write); using var skSurface = SKSurface.Create( new SKImageInfo(width, height, SKImageInfo.PlatformColorType, SKAlphaType.Unpremul) ); skSurface.Canvas.Clear(Color.Transparent.ToSkia()); skSurface.Canvas.Scale(scale, scale); var viewport = new Viewport { Center = boundingBox.Centroid, Width = width, Height = height, Resolution = ZoomHelper.DetermineResolution(boundingBox.Width, boundingBox.Height, width, height) }; DrawMap(skSurface, boundingBox, viewport); DrawRoute(skSurface, viewport, boundingBox, route); DrawArrows(skSurface, viewport, route, scale); DrawPOIs(skSurface, viewport, route, scale); using var image = skSurface.Snapshot(); using var data = image.Encode(); data.SaveTo(fileStream); }
/// <summary> /// Navigate center of viewport to center of extent and change resolution /// </summary> /// <param name="extent">New extent for viewport to show</param> /// <param name="scaleMethod">Scale method to use to determin resolution</param> public void NavigateTo(BoundingBox extent, ScaleMethod scaleMethod = ScaleMethod.Fit) { Viewport.Resolution = ZoomHelper.DetermineResolution( extent.Width, extent.Height, Viewport.Width, Viewport.Height, scaleMethod); Viewport.Center = extent.Centroid; OnRefreshGraphics(); RefreshData(true); }
/// <summary> /// Navigate center of viewport to center of extent and change resolution /// </summary> /// <param name="extent">New extent for viewport to show</param> /// <param name="scaleMethod">Scale method to use to determin resolution</param> public void NavigateTo(BoundingBox extent, ScaleMethod scaleMethod = ScaleMethod.Fit) { if (extent == null) { return; } _viewport.SetResolution(ZoomHelper.DetermineResolution( extent.Width, extent.Height, _viewport.Width, _viewport.Height, scaleMethod)); _viewport.SetCenter(extent.Centroid); _map.RefreshData(_viewport.Extent, _viewport.Resolution, true); }
/// <summary> /// Navigate center of viewport to center of extent and change resolution /// </summary> /// <param name="extent">New extent for viewport to show</param> /// <param name="scaleMethod">Scale method to use to determine resolution</param> /// <param name="duration">Duration of animation in millisecondsScale method to use to determine resolution</param> public void NavigateTo(BoundingBox extent, ScaleMethod scaleMethod = ScaleMethod.Fit, long duration = 300) { if (extent == null) { return; } var resolution = ZoomHelper.DetermineResolution( extent.Width, extent.Height, _viewport.Width, _viewport.Height, scaleMethod); NavigateTo(extent.Centroid, resolution, duration); }
/// <summary> /// Navigate center of viewport to center of extent and change resolution /// </summary> /// <param name="extent">New extent for viewport to show</param> /// <param name="scaleMethod">Scale method to use to determine resolution</param> /// <param name="duration">Duration for animation in milliseconds.</param> /// <param name="easing">The type of easing function used to transform from begin tot end state</param> public void NavigateTo(MRect?extent, ScaleMethod scaleMethod = ScaleMethod.Fit, long duration = -1, Easing?easing = default) { if (extent == null) { return; } var resolution = ZoomHelper.DetermineResolution( extent.Width, extent.Height, _viewport.Width, _viewport.Height, scaleMethod); NavigateTo(extent.Centroid, resolution, duration, easing); }
/// <summary> /// Navigate center of viewport to center of extent and change resolution /// </summary> /// <param name="extent">New extent for viewport to show</param> /// <param name="scaleMethod">Scale method to use to determine resolution</param> public void NavigateTo(BoundingBox extent, ScaleMethod scaleMethod = ScaleMethod.Fit) { if (extent == null) { return; } var resolution = ZoomHelper.DetermineResolution( extent.Width, extent.Height, _viewport.Width, _viewport.Height, scaleMethod); _viewport.SetResolution(resolution); _viewport.SetCenter(extent.Centroid); Navigated?.Invoke(this, EventArgs.Empty); }