Example #1
0
		/// <summary>
		/// Paints the underline for the specified node
		/// </summary>
		/// <param name="oNode"></param>
		/// <param name="oGraphics"></param>
		/// <param name="nX"></param>
		/// <param name="nY"></param>
		private void PaintNodeUnderline(Node oNode, string sText, Graphics oGraphics, int nX, int nY)
		{
			UnderlineStyle oStyle = oNode.GetUnderlineStyle();
			Pen oPen = new Pen(oNode.GetUnderlineColor(), 1);
			SizeF oSize = oGraphics.MeasureString(StringDrawUtils.GetInstance().GetTextFromFormattedString(sText), 
				oNode.GetFont(), oNode.GetTreeView().GetDrawWidth() - nX - 8);
			oSize.Width += 2;

			if (oStyle == UnderlineStyle.Tilde)
			{
				Pen oClearPen = null;
				
				if (oNode.IsSelected == false)
				{
					if (oNode.BackgroundStyle.Visible == false)
						oClearPen = oNode.GetUnderlineBackColor();
					else
						oClearPen = new Pen(oNode.BackgroundStyle.BackColor, 1);
				}
				else
					oClearPen = new Pen(oNode.GetSelectedBackColor(), 1);
				
				int nStep = 0;
				
				while (nX + 4 + nStep < nX + oSize.Width)
				{
					oGraphics.DrawLine(oPen, nX + 4 + nStep, nY + oSize.Height - 2, nX + 5 + nStep, nY + oSize.Height - 2);
					oGraphics.DrawLine(oClearPen, nX + 5 + nStep, nY + oSize.Height - 2, nX + 6 + nStep, nY + oSize.Height - 2);
					nStep += 4;
				}

				nStep = 0;
				while (nX + 4 + nStep < nX + oSize.Width)
				{
					oGraphics.DrawLine(oPen, nX + 5 + nStep, nY + oSize.Height - 1, nX + 6 + nStep, nY + oSize.Height - 1);
					oGraphics.DrawLine(oClearPen, nX + 6 + nStep, nY + oSize.Height - 1, nX + 7 + nStep, nY + oSize.Height - 1);
					nStep += 2;
				}

				nStep = 0;
				while (nX + 4 + nStep < nX + oSize.Width)
				{
					oGraphics.DrawLine(oPen, nX + 6 + nStep, nY + oSize.Height, nX + 7 + nStep, nY + oSize.Height);
					oGraphics.DrawLine(oClearPen, nX + 7 + nStep, nY + oSize.Height, nX + 8 + nStep, nY + oSize.Height);
					nStep += 4;
				}

				oClearPen.Dispose();
			}
			else
			{
				if (oStyle == UnderlineStyle.Dash)
					oPen.DashStyle = DashStyle.Dash;

				if (oStyle == UnderlineStyle.Dot)
					oPen.DashStyle = DashStyle.Dot;				

				oGraphics.DrawLine(oPen, nX + 4, nY + oSize.Height - 2, nX + oSize.Width, nY + oSize.Height - 2);
			}

			oPen.Dispose();
		}