private void OnGraphPanel_SizeChanged(PointD2D newSize) { if (!(newSize.X > 0 && newSize.Y > 0)) { return; } if (null == _renderer) { _d3dCanvas.Source = new D3D10ImageSource(Controller?.Doc?.Name); _renderer = new D3D10RendererToImageSource(_scene, (D3D10ImageSource)_d3dCanvas.Source, Controller?.Doc?.Name); // invalidate the cached graph sizes in order to force a new rendering _cachedGraphSize_Pixels = new System.Drawing.Size(0, 0); _cachedGraphSize_96thInch = new PointD2D(0, 0); } if (newSize != _cachedGraphSize_96thInch) { _cachedGraphSize_96thInch = newSize; var screenResolution = Current.Gui.ScreenResolutionDpi; var graphSizePixels = screenResolution * _cachedGraphSize_96thInch / 96.0; _cachedGraphSize_Pixels = new System.Drawing.Size((int)graphSizePixels.X, (int)graphSizePixels.Y); _renderer.SetRenderSize(_cachedGraphSize_Pixels.Width, _cachedGraphSize_Pixels.Height); Controller?.EhView_GraphPanelSizeChanged(); // inform controller } }
public void AnnounceContentVisibilityChanged(bool isVisible) { _isGraphVisible = isVisible; // System.Diagnostics.Debug.WriteLine("Visibility of Graph {0} is now {1} Canvas: {2}x{3}", Controller?.Doc?.Name, _isGraphVisible, _guiCanvas.ActualWidth, _guiCanvas.ActualHeight); if (_isGraphVisible) { OnGraphPanel_SizeChanged(new PointD2D(_guiCanvas.ActualWidth, _guiCanvas.ActualHeight)); } else { var tempRenderer = _renderer; _renderer = null; tempRenderer?.Dispose(); var oldSource = (D3D10ImageSource)_d3dCanvas.Source; _d3dCanvas.Source = null; oldSource?.Dispose(); } }