public void RemoveLayer(SlideViewLayer layer) { Debug.Assert(layer != null); if (!this.myLayers.Contains(layer)) { throw new ArgumentException("this object does not contain the given layer", "layer"); } int index = this.myLayers.IndexOf(layer); layer.Invalidated -= new SlideViewer.RegionEventHandler(this.HandleInvalidatedLayer); this.myLayers.RemoveAt(index); if (this.myLayerDirtyRegions[index] != null) { ((System.Drawing.Region) this.myLayerDirtyRegions[index]).Dispose(); } this.myLayerDirtyRegions.RemoveAt(index); layer.Detach(); // Redraw everything since we expect remove events to be rare, anyway. this.MarkForFullRedraw(); this.myLayerPanel.Invalidate(); if (this.LayerRemoved != null) { this.LayerRemoved(this, EventArgs.Empty); } }
/// <remarks>Disposes of layers as it removes them (unlike RemoveLayer)</remarks> public void ClearLayers() { while (this.LayerCount > 0) { SlideViewLayer layer = this.GetLayer(0); this.RemoveLayer(0); layer.Dispose(); } }
protected virtual void HandleInvalidatedLayer(object sender, SlideViewer.RegionEventArgs args) { SlideViewLayer layer = (SlideViewLayer)sender; int index = this.myLayers.IndexOf(layer); Debug.Assert(index >= 0 && index < this.myLayerDirtyRegions.Count); Debug.Assert(this.myLayerDirtyRegions.Count == this.myLayers.Count); if (this.myLayerDirtyRegions[index] == null) { this.myLayerDirtyRegions[index] = new Region(); } try { ((System.Drawing.Region) this.myLayerDirtyRegions[index]).Union(args.Region); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } }
public void AddLayer(SlideViewLayer layer) { if (layer == null) { throw new ArgumentNullException("layer", "layer may not be null"); } this.myLayers.Add(layer); this.myLayerDirtyRegions.Add(new Region(new RectangleF(0, 0, 1, 1))); // Redraw everything since we expect add events to be rare, anyway. this.MarkForFullRedraw(); this.myLayerPanel.Invalidate(); layer.Attach(this); layer.Invalidated += new SlideViewer.RegionEventHandler(this.HandleInvalidatedLayer); if (this.LayerAdded != null) { this.LayerAdded(this, EventArgs.Empty); } }
public bool HasLayer(SlideViewLayer layer) { return(this.myLayers.Contains(layer)); }