protected override void UpdateUIRepresentationCore() { var transform = Plotter.Viewport.Transform; Rect r = rect.DataToScreen(transform); // Rect is based off lower-left corner of rectangle. // Ellipse centre is midpoint. ellipseGeometry.Center = new Point(r.X, r.Y); ellipseGeometry.RadiusX = r.Width; ellipseGeometry.RadiusY = r.Height; }
private void OnRender() { if (Plotter == null) { return; } if (DesignerProperties.GetIsInDesignMode(this)) { return; } if (rendering && !renderingPending) { Dispatcher.BeginInvoke(OnRender); return; } else if (rendering) { return; } rendering = true; renderingPending = false; ContentPanel.Children.Clear(); var transform = Plotter.Viewport.Transform; Rect output = Plotter.Viewport.Output; DataRect visible = Plotter.Viewport.Visible; var tileInfos = GetVisibleTiles(); var lowerTiles = GetLoadedLowerTiles(tileInfos); foreach (var tile in lowerTiles) { var id = tile.Id; if (TileSystem.IsLoaded(id)) { var bmp = TileSystem[id]; DataRect visibleRect = Transform(TileProvider.GetTileBounds(id)); Rect screenRect = visibleRect.DataToScreen(transform); DrawTile(bmp, screenRect, visibleRect, tile.Clip); } else { TileSystem.BeginLoadImage(id); } } foreach (var tileInfo in tileInfos) { if (TileSystem.IsLoaded(tileInfo.Tile)) { var bmp = TileSystem[tileInfo.Tile]; DrawTile(bmp, tileInfo.ScreenBounds, tileInfo.VisibleBounds, null); } else { TileSystem.BeginLoadImage(tileInfo.Tile); } } rendering = false; }