protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (!KeyDownShiftOnly() && !KeyDownControlOnly()) { Cursor = cursorMouseUp; } if (mouseDown) { this.previewRenderer.Visible = true; OnMouseMove(e); if (savedSurfaces.Count > 0) { PdnRegion saveMeRegion = new PdnRegion(); saveMeRegion.MakeEmpty(); foreach (PlacedSurface pi1 in savedSurfaces) { saveMeRegion.Union(pi1.Bounds); } PdnRegion simplifiedRegion = Utility.SimplifyAndInflateRegion(saveMeRegion); using (IrregularSurface weDrewThis = new IrregularSurface(renderArgs.Surface, simplifiedRegion)) { for (int i = savedSurfaces.Count - 1; i >= 0; --i) { PlacedSurface ps = (PlacedSurface)savedSurfaces[i]; ps.Draw(renderArgs.Surface); ps.Dispose(); } savedSurfaces.Clear(); if (hasDrawn) { HistoryMemento ha = new BitmapHistoryMemento(Name, Image, DocumentWorkspace, ActiveLayerIndex, simplifiedRegion); weDrewThis.Draw(bitmapLayer.Surface); HistoryStack.PushNewMemento(ha); } } } mouseDown = false; modifierDown = 0; } if (brushRenderArgs != null) { if (brushRenderArgs.Surface != null) { brushRenderArgs.Surface.Dispose(); } } }