protected override void OnMouseDown(MouseEventArgs e) { Point pos = new Point(e.X, e.Y); this.contiguous = ((ModifierKeys & Keys.Shift) == 0); if (Document.Bounds.Contains(pos)) { base.OnMouseDown(e); PdnRegion currentRegion = Selection.CreateRegion(); // See if the mouse click is valid if (!currentRegion.IsVisible(pos) && limitToSelection) { currentRegion.Dispose(); currentRegion = null; return; } // Set the current surface, color picked and color to draw Surface surface = ((BitmapLayer)ActiveLayer).Surface; IBitVector2D stencilBuffer = new BitVector2DSurfaceAdapter(this.ScratchSurface); Rectangle boundingBox; int tolerance = (int)(AppEnvironment.Tolerance * AppEnvironment.Tolerance * 256); if (contiguous) { FillStencilFromPoint(surface, stencilBuffer, pos, tolerance, out boundingBox, currentRegion, limitToSelection); } else { FillStencilByColor(surface, stencilBuffer, surface[pos], tolerance, out boundingBox, currentRegion, limitToSelection); } Point[][] polygonSet = PdnGraphicsPath.PolygonSetFromStencil(stencilBuffer, boundingBox, 0, 0); OnFillRegionComputed(polygonSet); } base.OnMouseDown(e); }