/// <summary> /// Draw selection /// </summary> /// <param name="e"></param> public override void OnPostPaint(VCItem sender, ItemPaintEventArgs e) { if (IsSelecting) { var rect = SelectionBounds; if (!rect.IsEmpty) { using (Pen pen = new Pen(Color.Black)) { pen.DashStyle = DashStyle.Dot; e.Graphics.DrawRectangle(pen, SelectionBounds.Round()); } } } base.OnPostPaint(sender, e); }
/// <summary> /// Draw selection /// </summary> public void Paint(VCItem sender, ItemPaintEventArgs e) { if (selecting) { var rect = SelectionBounds; if (!rect.IsEmpty) { using (var pen = new Pen(Color.Black)) { pen.DashStyle = DashStyle.Dot; e.Graphics.DrawRectangle(pen, SelectionBounds.Round()); } } } // Draw selection boxes (if any) if (container.SelectedItems.Count > 0) { container.DrawItems(e, DrawSelectionBoxes); } }
void DistributeTriangles(int[] inputTriangles, Vector3[] inputVertices) { // Redistribute the triangles into two lists. trianglesToCut.Clear(); trianglesToKeep.Clear(); for (int triStartIndex = 0; triStartIndex < inputTriangles.Length - 3; triStartIndex += 3) { if (SelectionBounds.Contains(inputVertices[inputTriangles[triStartIndex]]) || SelectionBounds.Contains(inputVertices[inputTriangles[triStartIndex + 1]]) || SelectionBounds.Contains(inputVertices[inputTriangles[triStartIndex + 2]])) { trianglesToCut.Add(inputTriangles[triStartIndex]); trianglesToCut.Add(inputTriangles[triStartIndex + 1]); trianglesToCut.Add(inputTriangles[triStartIndex + 2]); } else { trianglesToKeep.Add(inputTriangles[triStartIndex]); trianglesToKeep.Add(inputTriangles[triStartIndex + 1]); trianglesToKeep.Add(inputTriangles[triStartIndex + 2]); } } }