/// <summary> /// Paint the node's lines /// </summary> private void PaintNodeLines(Node oNode, Graphics oGraphics, int nX, int nY, Hashtable mapItemBoxToRect, Hashtable m_mapSubItemToRect) { if (oNode.GetShowLines() == true && oNode.Parent != null) { int nAlpha = oNode.TreeView.GetNodeAlpha(oNode); int nNXAdd = 0; //if (oNode.GetShowPlusMinus() == false) // nNXAdd = -1; if (oNode.GetTreeView().Style.ShowPlusMinus && oNode.ShowPlusMinus == false) nNXAdd = 0; if (oNode.IndentLevel != 0) nNXAdd -= m_oTreeView.Style.NodeSpaceHorizontal; Pen oPen = null; if (oNode.Flash == true) nAlpha = 255; oPen = new Pen(Color.FromArgb(nAlpha, oNode.GetLineColor()), 1); oPen.DashStyle = TreeView.GetLineStyle(oNode.GetLineStyle()); if (oNode.m_nCollectionOrder != 0 && oNode.Flash == false && oNode.IsInSelectedPath() == false) { Node oPrevNode = null; foreach (Node oTestNode in oNode.Collection) { if (oTestNode.m_nCollectionOrder == oNode.m_nCollectionOrder - 1) { oPrevNode = oTestNode; break; } } if (oPrevNode != null) { // prev node rect object oRect = mapItemBoxToRect[oPrevNode]; if (oNode.GetTreeView().Sorted == false) oRect = mapItemBoxToRect[oNode.Parent]; if (oRect != null) { Rectangle oParentRect = (Rectangle)oRect; oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, nY + 7, nX - 14 + nNXAdd + m_oTreeView.Style.NodeSpaceHorizontal, nY + 7); if (oNode.GetTreeView().Sorted == true) oParentRect.Y -= 6; if ((oNode.IsInSelectedPath() && oNode.GetHighlightSelectedPath() == true) || oNode.IsLastInCollection() || oNode.GetTreeView().Sorted == true) oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, oParentRect.Y + 13, nX - 19 + nNXAdd, nY + 7); } } else { // parent rect object oRect = mapItemBoxToRect[oNode.Parent]; if (oRect != null) { Rectangle oParentRect = (Rectangle)oRect; oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, nY + 7, nX - 14 + nNXAdd + m_oTreeView.Style.NodeSpaceHorizontal, nY + 7); if ((oNode.IsInSelectedPath() && oNode.GetHighlightSelectedPath() == true) || oNode.IsLastInCollection() || oNode.GetTreeView().Sorted == true) oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, oParentRect.Y + 13, nX - 19 + nNXAdd, nY + 7); } } } else { // parent rect object oRect = mapItemBoxToRect[oNode.Parent]; if (oRect != null) { Rectangle oParentRect = (Rectangle)oRect; oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, nY + 7, nX - 14 + nNXAdd + m_oTreeView.Style.NodeSpaceHorizontal, nY + 7); if (oNode.GetShowPlusMinus() == false) { oRect = m_mapSubItemToRect[oNode.Parent]; if (oRect == null) { if ((oNode.IsInSelectedPath() && oNode.GetHighlightSelectedPath() == true) || oNode.IsLastInCollection() || oNode.GetTreeView().Sorted == true) oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, oParentRect.Y + 13, nX - 19 + nNXAdd, nY + 7); } else { oParentRect = (Rectangle)oRect; if ((oNode.IsInSelectedPath() && oNode.GetHighlightSelectedPath() == true) || oNode.IsLastInCollection() || oNode.GetTreeView().Sorted == true) oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, oParentRect.Y + 13, nX - 19 + nNXAdd, nY + 7); } } else { if ((oNode.IsInSelectedPath() && oNode.GetHighlightSelectedPath() == true) || oNode.IsLastInCollection() || oNode.GetTreeView().Sorted == true) oGraphics.DrawLine(oPen, nX - 19 + nNXAdd, oParentRect.Y + 13, nX - 19 + nNXAdd, nY + 7); } } } oPen.Dispose(); } }
/// <summary> /// Paint the node's flash lines /// </summary> /// <param name="oNode"></param> /// <param name="oGraphics"></param> internal void PaintNodeFlashLines(Node oNode, Graphics oGraphics) { if (oNode == null || oNode.Parent == null) return; if (oNode.GetShowLines() == false) return; if (oNode.Parent != null) PaintNodeFlashLine(oNode, oGraphics); }