protected override void OnMouseUp(int x, int y) { base.OnMouseUp(x, y); if (prevPixTools.Count > 0) { int prevPixToolCount = prevPixTools.Count; for (int n = prevPixToolCount - 1; n >= 0; --n) { PixelToolController prevPixTool = prevPixTools[n]; //do path clip*** List <VertexStore> resultList = PixelFarm.Agg.VertexSource.VxsClipper.CombinePaths( new VertexStoreSnap(prevPixTool.GetVxs()), new VertexStoreSnap(this.GetVxs()), PixelFarm.Agg.VertexSource.VxsClipperType.Difference, true); int count; switch (count = resultList.Count) { case 1: { //replace the last one with newBrushPath prevPixTool.SetVxs(resultList[0]); } break; case 0: break; default: { //we will replace all with new set*** var brushPath = prevPixTool as MyDrawingBrushController; if (brushPath != null) { System.Drawing.Color fillColor = brushPath.PathFillColor; prevPixTools.RemoveAt(n); for (int i = 0; i < count; ++i) { var subBrush = new MyDrawingBrushController(); subBrush.SetVxs(resultList[i]); subBrush.PathFillColor = fillColor; prevPixTools.Insert(n, subBrush); } } } break; } } } }
protected override void OnMouseDown(int x, int y) { _latest_mouseX = x; _latest_mouseY = y; if (_lastestSelectedController != null) { if (_lastestSelectedController is MyDrawingBrushController) { ((MyDrawingBrushController)_lastestSelectedController).PathFillColor = _latestSelectControllerFillColor; } } int j = this.prevPixTools.Count; PixelToolController selectedShape = null; for (int i = this.prevPixTools.Count - 1; i >= 0; --i) { PixelToolController p = prevPixTools[i]; if (p.HitTest(x, y)) { //found //then check fill color _lastestSelectedController = p; if (_lastestSelectedController is MyDrawingBrushController) { var b = (MyDrawingBrushController)_lastestSelectedController; _latestSelectControllerFillColor = b.PathFillColor; b.PathFillColor = System.Drawing.Color.Blue; } selectedShape = p; break; } } base.OnMouseDown(x, y); }