private void RemoveLayerAt(int layerIndex) { Layer key = this.layers[layerIndex]; if (this.activeLayer == key) { this.ActiveLayer = null; } this.BeginLayersListChange(); VerticalImageStrip.Item item = this.layerToItemMap[key]; item.Tag = null; base.RemoveItem(item); if (item.Image != null) { item.Image.Dispose(); } key.Invalidated -= new EventHandler <RectInt32InvalidatedEventArgs>(this.OnLayerInvalidated); key.PropertyChanged -= new PropertyEventHandler(this.OnLayerPropertyChanged); this.layers.RemoveAt(layerIndex); this.layerToItemMap.Remove(key); OurThumbnailProvider nukeMe = new OurThumbnailProvider(null, key); this.thumbnailManager.RemoveFromQueue(nukeMe); this.EndLayersListChange(); }
private void OnThumbnailUpdated(object sender, ValueEventArgs <Tuple <IThumbnailProvider, ISurface <ColorBgra> > > e) { if (!base.IsDisposed) { VerticalImageStrip.Item item; OurThumbnailProvider provider = (OurThumbnailProvider)e.Value.Item1; Layer key = provider.Layer; if (this.layerToItemMap.TryGetValue(key, out item)) { Image image = item.Image; using (Bitmap bitmap = new Bitmap(e.Value.Item2.Width, e.Value.Item2.Height, e.Value.Item2.Stride, PixelFormat.Format32bppArgb, e.Value.Item2.Scan0)) { Image image2 = new Bitmap(bitmap); item.Image = image2; } e.Value.Item2.Dispose(); if (image != null) { image.Dispose(); } if (item.ImageOpacity.FinalValue != 1.0) { item.ImageOpacity.AnimateValueTo(1.0, 0.5, AnimationTransitionType.SmoothStop); } } } }
private void RefreshLayerThumbnail(Layer layer) { if (this.layerToItemMap.ContainsKey(layer)) { IRenderer <ColorBgra> layerRenderer = null; if ((layerRenderer == null) && (this.documentWorkspace != null)) { int index = this.document.Layers.IndexOf(layer); if (index != -1) { layerRenderer = this.documentWorkspace.DocumentCanvas.DocumentCanvasLayer.DocumentRenderer.CreateLayerRenderer(index); } } if (layerRenderer == null) { layerRenderer = new SolidColorRendererBgra(layer.Width, layer.Height, ColorBgra.TransparentBlack); } OurThumbnailProvider updateMe = new OurThumbnailProvider(layerRenderer, layer); this.thumbnailManager.QueueThumbnailUpdate(updateMe, base.ThumbEdgeLength, new ValueEventHandler <Tuple <IThumbnailProvider, ISurface <ColorBgra> > >(this.OnThumbnailUpdated)); } }