Exemplo n.º 1
0
        private void folderTreeView_DrawNode(object sender, System.Windows.Forms.DrawTreeNodeEventArgs e)
        {
            // Draw default by default
            e.DrawDefault = true;
            if (e.Node.Text.Contains("Deleted"))
            {
                // Draw Deleted
                DrawAnnotatedText(e, this.DeletedCount, Color.Blue, "(", ")");

                // Turn off drawing
                e.DrawDefault = false;
            }
            else if (e.Node.Text.Contains("Inbox"))
            {
                // Draw Inbox
                DrawAnnotatedText(e, this.UnreadCount, Color.Green, "[", "]");

                // Turn off drawing
                e.DrawDefault = false;
            }
            else if (e.Node.Text.Contains("Drafts"))
            {
                // Draw Drafts
                DrawAnnotatedText(e, this.DraftsCount, Color.Blue, "(", ")");

                // Turn off drawing
                e.DrawDefault = false;
            }
        }
Exemplo n.º 2
0
		// This method is here because by default TreeView try to display icon in every case
		// i.e. even when we have no icon to show it's going to put a blank space. So here we 
		// detect when that happen and "shift" the text back in the right position 16px to the left
		internal static void DrawDocTreeNodeText (object sender, DrawTreeNodeEventArgs e)
		{
			if (!string.IsNullOrEmpty (e.Node.ImageKey)) {
				e.DrawDefault = true;
				return;
			}
			// Retrieve the node font. If the node font has not been set,
            // use the TreeView font.
            Font nodeFont = e.Node.NodeFont;
            if (nodeFont == null)
				nodeFont = ((TreeView)sender).Font;

            // Draw the node text.
			var clip = new Rectangle (e.Bounds.X - 16, e.Bounds.Y, e.Bounds.Width + 16, e.Bounds.Height);
			e.Graphics.SetClip (clip);
			if ((e.State & TreeNodeStates.Selected) != 0) {
				e.Graphics.Clear (SystemColors.Highlight);
				using (var pen = new Pen (Color.Black)) {
					pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
					e.Graphics.DrawRectangle (pen, new Rectangle (clip.Location, new Size (clip.Width - 1, clip.Height - 1)));
				}
				e.Graphics.DrawString (e.Node.Text, nodeFont, SystemBrushes.HighlightText, clip);
			} else {
				e.Graphics.Clear (Color.White);
				e.Graphics.DrawString (e.Node.Text, nodeFont, Brushes.Black, clip);
			}
		}
Exemplo n.º 3
0
 /// <summary>
 /// DrawNodeイベントを発生させます。
 /// </summary>
 /// <param name="e">イベントデータを格納している<see cref="System.Windows.Forms.DrawTreeNodeEventArgs"/>。</param>
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     if (!MultiLineLabel)
         base.OnDrawNode(e);
     else
         TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Bounds, this.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
 }
Exemplo n.º 4
0
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            if (e.Node.IsVisible && null != e.Node.Tag)
            {
                if (e.Node.Tag is AttributeData)
                {
                    e.DrawDefault = false;
                    var data = (AttributeData) e.Node.Tag;

                    e.Graphics.DrawString(data.Name, Font, _grayBrush, e.Bounds.X, e.Bounds.Y);
                    var nameSize = e.Graphics.MeasureString(data.Name, Font);

                    e.Graphics.DrawString(data.Value, Font, _blackPen.Brush, e.Bounds.X + nameSize.Width + 5, e.Bounds.Y);
                }

                else if (e.Node.Tag is PluginElementData)
                {
                    e.DrawDefault = false;
                    var data = (PluginElementData) e.Node.Tag;

                    Bitmap icon;

                    if ((icon = GetIcon(data.IconPath)) != null)
                        e.Graphics.DrawImage(icon, e.Bounds.X, e.Bounds.Y, 16, 16);

                    e.Graphics.DrawString(data.Name, Font, _blackPen.Brush, e.Bounds.X + 20, e.Bounds.Y);
                }
            }
            else e.DrawDefault = true;

            base.OnDrawNode(e);
        }
Exemplo n.º 5
0
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            base.OnDrawNode(e);

            //节点背景绘制
            if (e.Node.IsSelected)
            {
                e.Graphics.DrawImage(Resources.tree_Selected, e.Bounds);
            }
            else if ((e.State & TreeNodeStates.Hot) != 0)//|| currentMouseMoveNode == e.Node)
            {
                e.Graphics.DrawImage(Resources.tree_Hover, e.Bounds);
            }
            else
            {
                e.Graphics.FillRectangle(Brushes.White, e.Bounds);
            }

            //节点头图标绘制
            if (e.Node.IsExpanded)
            {
                e.Graphics.DrawImage(Resources.tree_NodeExpend, e.Node.Bounds.X - 12, e.Node.Bounds.Y + 9);
            }
            else if (e.Node.IsExpanded == false && e.Node.Nodes.Count > 0)
            {
                e.Graphics.DrawImage(Resources.tree_NodeCollaps, e.Node.Bounds.X - 12, e.Node.Bounds.Y + 9);
            }

            //文本绘制
            using (Font foreFont = new Font(this.Font, FontStyle.Regular))
            using (Brush drawTextBrush = new SolidBrush(drawTextColor))
            {
                e.Graphics.DrawString(e.Node.Text, foreFont, drawTextBrush, e.Node.Bounds.Left + 5, e.Node.Bounds.Top + 1);
            }
        }
Exemplo n.º 6
0
		internal static void DrawSearchResultNodeText (object sender, DrawTreeNodeEventArgs e)
		{
            Font nodeFont = e.Node.NodeFont;
            if (nodeFont == null)
				nodeFont = ((TreeView)sender).Font;
			var clip = new Rectangle (0, e.Bounds.Y, e.Node.TreeView.Width, e.Bounds.Height);
			e.Graphics.SetClip (clip);
			var selectedStates = TreeNodeStates.Marked | TreeNodeStates.Selected | TreeNodeStates.Focused;

			if (e.Node.Tag == null) {
				nodeFont = new Font (nodeFont.FontFamily, nodeFont.Size - 2);
				// We use a TabRenderer to get the nice system gradient
				e.Graphics.Clear (Color.White);
				clip = new Rectangle (1, e.Bounds.Y + 1, e.Node.TreeView.ClientRectangle.Width - 3, e.Bounds.Height - 3);
				// If we're using the classic theme, then we can't use TabRender. Fall back to a simpler view.
				if (TabRenderer.IsSupported) {
					TabRenderer.DrawTabItem(e.Graphics, clip, e.Node.Text, nodeFont, System.Windows.Forms.VisualStyles.TabItemState.Normal);
				} else {
					e.Graphics.FillRectangle(SystemBrushes.ActiveCaption, clip);
					// The fallback rendering has more empty space than the tab rendering. Take advantage of it.
					var fallbackNodeFont = new Font(nodeFont.FontFamily, nodeFont.Size + 2);
					e.Graphics.DrawString(e.Node.Text, fallbackNodeFont, SystemBrushes.ActiveCaptionText, clip.X, clip.Y);
				}
				using (var pen = new Pen (Color.Black, 1.0f))
					e.Graphics.DrawLine (pen, new Point (clip.Left, clip.Bottom), new Point (clip.Right - 1, clip.Bottom));
			} else {
				e.Graphics.Clear ((e.State & selectedStates) != 0 ? SystemColors.Highlight : SystemColors.ControlLightLight);
				e.Graphics.DrawString (e.Node.Text, nodeFont, (e.State & selectedStates) != 0 ? SystemBrushes.HighlightText : SystemBrushes.ControlText, new PointF (e.Bounds.X, e.Bounds.Y + 2));
			}
		}
Exemplo n.º 7
0
		protected override void OnDrawNode(DrawTreeNodeEventArgs e)
		{
			try
			{
				Rectangle Bounds = new Rectangle(e.Bounds.Location.X, e.Bounds.Location.Y, e.Bounds.Width, e.Bounds.Height);
				//e.Node.Nodes.Item.
				switch (State)
				{
					case TreeNodeStates.Default:
						e.Graphics.FillRectangle(Brushes.Red, Bounds);
						e.Graphics.DrawString(e.Node.Text, new Font("Segoe UI", 8), Brushes.LimeGreen, new Rectangle(Bounds.X + 2, Bounds.Y + 2, Bounds.Width, Bounds.Height), Helpers.NearSF);
						Invalidate();
						break;
					case TreeNodeStates.Checked:
						e.Graphics.FillRectangle(Brushes.Green, Bounds);
						e.Graphics.DrawString(e.Node.Text, new Font("Segoe UI", 8), Brushes.Black, new Rectangle(Bounds.X + 2, Bounds.Y + 2, Bounds.Width, Bounds.Height), Helpers.NearSF);
						Invalidate();
						break;
					case TreeNodeStates.Selected:
						e.Graphics.FillRectangle(Brushes.Green, Bounds);
						e.Graphics.DrawString(e.Node.Text, new Font("Segoe UI", 8), Brushes.Black, new Rectangle(Bounds.X + 2, Bounds.Y + 2, Bounds.Width, Bounds.Height), Helpers.NearSF);
						Invalidate();
						break;
				}

			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message);
			}

			base.OnDrawNode(e);
		}
Exemplo n.º 8
0
		private void OnDrawNode(object sender, DrawTreeNodeEventArgs e)
		{
			if ((e.State & TreeNodeStates.Selected) != 0)
			{

				var backColor = ((e.State & TreeNodeStates.Focused) != 0) ? Configuration.DefaultFocusedColor : BackColor ;

				e.Graphics.FillRectangle(new SolidBrush(backColor), NodeBounds(e.Node));

				// Retrieve the node font. If the node font has not been set,
				// use the TreeView font.
				var nodeFont = e.Node.NodeFont ?? ((TreeView) sender).Font;

				// Draw the node text.
				e.Graphics.DrawString(e.Node.Text, nodeFont, new SolidBrush(ForeColor),
					Rectangle.Inflate(e.Bounds, 2, 0));
			}
			else
			{
				e.DrawDefault = true;
			}

//			if ((e.State & TreeNodeStates.Focused) == 0) return;
//
//			using(var focusBrush = new SolidBrush(Configuration.DefaultFocusedColor))
//			{
//				focusBrush.Color = Color.FromArgb(100, focusBrush.Color.R, focusBrush.Color.G, focusBrush.Color.B);
//				var focusBounds = NodeBounds(e.Node);
//				focusBounds.Size = new Size(focusBounds.Width - 1,
//					focusBounds.Height - 1);
////				e.Graphics.DrawRectangle(focusPen, focusBounds);
//				e.Graphics.FillRectangle(focusBrush,focusBounds);
//			}
		}
Exemplo n.º 9
0
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            TreeNodeStates state = e.State;
            Font font = e.Node.NodeFont ?? e.Node.TreeView.Font;
            Color fore = e.Node.ForeColor;
            Rectangle rect = new Rectangle();
            if (fore == Color.Empty)
                fore = e.Node.TreeView.ForeColor;

            if (e.Node == e.Node.TreeView.SelectedNode)
            {
                fore = SystemColors.HighlightText;
                rect = new Rectangle(0, e.Bounds.Y, e.Node.TreeView.Width, e.Node.Bounds.Height);
                e.Graphics.FillRectangle(new SolidBrush(e.Node.BackColor), rect);
                //ControlPaint.DrawFocusRectangle(e.Graphics, rect, fore, Color.Red);
                TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, fore, e.Node.BackColor, TextFormatFlags.GlyphOverhangPadding | TextFormatFlags.VerticalCenter);
            }
            else
            {
                rect = new Rectangle(0, e.Bounds.Y, e.Node.TreeView.Width, e.Node.Bounds.Height);
                e.Graphics.FillRectangle(new SolidBrush(Parent.BackColor), rect);
                TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, fore, TextFormatFlags.GlyphOverhangPadding | TextFormatFlags.VerticalCenter);
            }
            base.OnDrawNode(e);
        }
Exemplo n.º 10
0
        void State_DrawNode (object sender, DrawTreeNodeEventArgs e) {
            if (!(e.Node.Tag is TreeNode_StateTag)) {
                return;
            }
            e.DrawDefault = false;
            TreeNode_StateTag state_tag = (TreeNode_StateTag)e.Node.Tag;
            State state = state_tag.state;
            string[] texts = e.Node.Text.Split();
            using (Brush black = new SolidBrush(Color.Black)) {
                using (Brush blue = new SolidBrush(Color.Blue)) {
                    using (Brush red = new SolidBrush(Color.Red)) {
                        using (Brush yellow = new SolidBrush(Color.DarkOrange)) {
                            Brush[] brushes = new Brush[] { 
                                    blue, red, yellow, red, blue,
                                    blue, red, yellow, red, blue
                                };
                            SizeF offset = new SizeF();

                            string panels = texts[0];
                            for (int i = 0; i < panels.Length; ++i) {
                                String p = "" + panels[i];
                                e.Graphics.DrawString(p, tree.Font, brushes[i], e.Bounds.Left + (int)offset.Width, e.Bounds.Top);
                                offset += e.Graphics.MeasureString(p, tree.Font);
                            }
                            for (int i = 1; i < texts.Length; ++i) {
                                string txt = texts[i];
                                e.Graphics.DrawString(txt, tree.Font, black, e.Bounds.Left + (int)offset.Width, e.Bounds.Top);
                                offset += e.Graphics.MeasureString(txt, tree.Font);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 11
0
 void AnalysisTreeView_DrawNode(object sender, System.Windows.Forms.DrawTreeNodeEventArgs e)
 {
     try
     {
         // get NodeTag
         NodeTag tag = e.Node.Tag as NodeTag;
         if (null == tag)
         {
             throw new Exception(string.Format("Node {0} has null tag", e.Node.Text));
         }
         Rectangle nodeBounds = e.Node.Bounds;
         if (null != tag.ItemProperties)
         {
             TextRenderer.DrawText(e.Graphics, tag.ItemProperties.Name, Font, nodeBounds, System.Drawing.Color.Black, Color.Transparent, TextFormatFlags.VerticalCenter | TextFormatFlags.NoClipping);
         }
         else
         {
             TextRenderer.DrawText(e.Graphics, e.Node.Text, Font, nodeBounds, System.Drawing.Color.Black, Color.Transparent, TextFormatFlags.VerticalCenter | TextFormatFlags.NoClipping);
         }
     }
     catch (Exception ex)
     {
         _log.Error(ex.Message);
     }
 }
Exemplo n.º 12
0
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     if ((OnDrawNodeField != null) && (OnDrawNodeField.GetValue(this) == null))
     {
         e.DrawDefault = true;
     }
     base.OnDrawNode(e);
 }
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     e.Graphics.DrawString (e.Node.Text.Split (';') [0], new Font ("Microsoft Sans Serif", 13),
         new SolidBrush (Color.Black), e.Bounds.X, e.Bounds.Y);
     e.Graphics.DrawString (e.Node.Text.Split (';') [1], new Font ("Microsoft Sans Serif", 9),
         new SolidBrush (Color.Black), e.Bounds.X + 10, e.Bounds.Y+15);
     base.OnDrawNode (e);
 }
Exemplo n.º 14
0
        private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            e.DrawDefault = true;

            Rectangle rect = e.Bounds;

            if ((e.State & TreeNodeStates.Selected) != 0)
            {
                if ((e.State & TreeNodeStates.Focused) != 0)
                    e.Graphics.FillRectangle(SystemBrushes.Highlight, rect);
                else
                    e.Graphics.FillRectangle(SystemBrushes.Control, rect);
            }
            else
                e.Graphics.FillRectangle(Brushes.White, rect);

            e.Graphics.DrawRectangle(SystemPens.Control, rect);

            for (int intColumn = 1; intColumn < this.listView1.Columns.Count; intColumn++)
            {
                rect.Offset(this.listView1.Columns[intColumn - 1].Width, 0);
                rect.Width = this.listView1.Columns[intColumn].Width;

                e.Graphics.DrawRectangle(SystemPens.Control, rect);

                string strColumnText;
                string[] list = e.Node.Tag as string[];
                if (list != null && intColumn<=list.Length)
                    strColumnText = list[intColumn - 1];
                else
                    strColumnText = e.Node.Text; // dummy

                TextFormatFlags flags = TextFormatFlags.EndEllipsis;
                switch(this.listView1.Columns[intColumn].TextAlign)
                {
                    case HorizontalAlignment.Center:
                        flags |= TextFormatFlags.HorizontalCenter;
                        break;
                    case HorizontalAlignment.Left:
                        flags |= TextFormatFlags.Left;
                        break;
                    case HorizontalAlignment.Right:
                        flags |= TextFormatFlags.Right;
                        break;
                    default:
                        break;
                }

                rect.Y++;
                if ((e.State & TreeNodeStates.Selected) != 0 &&
                    (e.State & TreeNodeStates.Focused) != 0)
                    TextRenderer.DrawText(e.Graphics, strColumnText, e.Node.NodeFont, rect, SystemColors.HighlightText, flags);
                else
                    TextRenderer.DrawText(e.Graphics, strColumnText, e.Node.NodeFont, rect, e.Node.ForeColor, e.Node.BackColor, flags);
                rect.Y--;
            }
        }
Exemplo n.º 15
0
		protected override int MeasureItemWidth(DrawTreeNodeEventArgs e)
		{
			Graphics g = e.Graphics;
			int x = MeasureTextWidth(g, positionText, BoldMonospacedFont);
//			if (line != null && !line.IsDeleted) {
//				x += MeasureTextWidth(g, bookmark.Document.GetText(line).Replace("\t", "    "), BoldMonospacedFont);
//			}
			return x;
		}
Exemplo n.º 16
0
 /// <summary>
 /// Override draw event to draw appended Control text to RegisterTreeNode.
 /// </summary>
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     if (e.Node is RegisterTreeNode)
     {
         e.Graphics.DrawString((e.Node as RegisterTreeNode).Control.Text, Font, new SolidBrush((e.Node as RegisterTreeNode).CreateTextColor()), e.Bounds.Right, e.Bounds.Top);
     }
     e.DrawDefault = true;
     base.OnDrawNode(e);
 }
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            TreeNodeStates treeState = e.State;
            Font treeFont = e.Node.NodeFont ?? e.Node.TreeView.Font;
            Font hotFont = e.Node.NodeFont ?? e.Node.TreeView.Font;

            // Colors.
            Color foreColor = e.Node.ForeColor;
            string strDeselectedColor = @"#6B6E77", strSelectedColor = @"#94C7FC";
            Color selectedColor = System.Drawing.ColorTranslator.FromHtml(strSelectedColor);
            Color deselectedColor = System.Drawing.ColorTranslator.FromHtml(strDeselectedColor);

            // New brush.
            SolidBrush selectedTreeBrush = new SolidBrush(selectedColor);
            SolidBrush deselectedTreeBrush = new SolidBrush(deselectedColor);

            // Set default font color.
            if (foreColor == Color.Empty)
                foreColor = e.Node.TreeView.ForeColor;

            // Draw bounding box and fill.
            if (e.Node == e.Node.TreeView.SelectedNode)
            {
                // Use appropriate brush depending on if the tree has focus.
                if (this.Focused)
                {
                    foreColor = SystemColors.HighlightText;
                    e.Graphics.FillRectangle(selectedTreeBrush, e.Bounds);
                    ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, foreColor, SystemColors.Highlight);
                    TextRenderer.DrawText(e.Graphics, e.Node.Text, treeFont, e.Bounds,
                                                 foreColor, TextFormatFlags.GlyphOverhangPadding);
                }
                else
                {
                    foreColor = SystemColors.HighlightText;
                    e.Graphics.FillRectangle(deselectedTreeBrush, e.Bounds);
                    ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, foreColor, SystemColors.Highlight);
                    TextRenderer.DrawText(e.Graphics, e.Node.Text, treeFont, e.Bounds,
                                                 foreColor, TextFormatFlags.GlyphOverhangPadding);
                }
            }
            else
            {
                if ((e.State & TreeNodeStates.Hot) == TreeNodeStates.Hot)
                {
                    e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds);
                    TextRenderer.DrawText(e.Graphics, e.Node.Text, hotFont, e.Bounds,
                                                 System.Drawing.Color.Black, TextFormatFlags.GlyphOverhangPadding);
                }
                else
                {
                    e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds);
                    TextRenderer.DrawText(e.Graphics, e.Node.Text, treeFont, e.Bounds,
                                                 foreColor, TextFormatFlags.GlyphOverhangPadding);
                }
            }
        }
Exemplo n.º 18
0
      private void OnDrawNode(object sender, DrawTreeNodeEventArgs e) {
         TestTreeNode node = e.Node as TestTreeNode;
         if( node != null ) {
            node.OnDrawNode(sender, e);
         }
         else {
            e.DrawDefault = true;
         }
         return;
         //e.DrawDefault = true;
         //return;

         // Draw the background and node text for a selected node.
         if ((e.State & TreeNodeStates.Selected) != 0) {
            // Draw the background of the selected node. The NodeBounds
            // method makes the highlight rectangle large enough to
            // include the text of a node tag, if one is present.
            Rectangle bounds = NodeBounds(e.Node);
            e.Graphics.FillRectangle(Brushes.Green, bounds);

            // Retrieve the node font. If the node font has not been set,
            // use the TreeView font.
            Font nodeFont = e.Node.NodeFont;
            if (nodeFont == null) nodeFont = ((TreeView)sender).Font;

            // Draw the node text.
            //e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, 2, 2);
            e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, bounds.Left, bounds.Top);
                //Rectangle.Inflate(e.Bounds, 2, 0));
         }

        // Use the default background and node text.
         else {
            e.DrawDefault = true;
         }

         // If a node tag is present, draw its string representation 
         // to the right of the label text.
         if (e.Node.Tag != null) {
            e.Graphics.DrawString(e.Node.Tag.ToString(), _tagFont,
                Brushes.Red, e.Bounds.Right + 2, e.Bounds.Top);
         }

         // If the node has focus, draw the focus rectangle large, making
         // it large enough to include the text of the node tag, if present.
         if ((e.State & TreeNodeStates.Focused) != 0) {
            using (Pen focusPen = new Pen(Color.Black)) {
               focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
               Rectangle focusBounds = NodeBounds(e.Node);
               focusBounds.Size = new Size(focusBounds.Width - 1,
               focusBounds.Height - 1);
               e.Graphics.DrawRectangle(focusPen, focusBounds);
            }
         }

      }
Exemplo n.º 19
0
 internal override void DrawNode(DrawTreeNodeEventArgs e)
 {
     CheckBoxRenderer.DrawCheckBox(
         e.Graphics,
         new Point(this.Bounds.X - 14, this.Bounds.Y + 1),
         _state ?
             CheckBoxState.CheckedNormal :
             CheckBoxState.UncheckedNormal
     );
 }
Exemplo n.º 20
0
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
     SizeF textSize = e.Graphics.MeasureString(e.Node.Text, oRAFonts.Font_SubDescription);
     
     //Because the bounds of the replay list include vertical scrollbar bounds
     int actualWidth = Width - new VScrollBar().Width - 2;
     e.Graphics.FillRectangle(new SolidBrush(e.Node.IsSelected ? oRAColours.Colour_Item_BG_0 : oRAColours.Colour_BG_P0), new Rectangle(e.Bounds.Left, e.Bounds.Y, Width, e.Bounds.Height));
     e.Graphics.DrawString(e.Node.Text, oRAFonts.Font_SubDescription, new SolidBrush(e.Node.IsSelected ? oRAColours.Colour_Text_H : oRAColours.Colour_Text_N), new RectangleF(new PointF(e.Bounds.Left + 5, e.Bounds.Y + e.Bounds.Height / 2f - textSize.Height / 2), new SizeF(actualWidth - 5, textSize.Height)), format);
 }
Exemplo n.º 21
0
		protected override int MeasureItemWidth(DrawTreeNodeEventArgs e)
		{
			Graphics g = e.Graphics;
			int x = MeasureTextWidth(g, fileNameText, RegularBigFont);
			x += MeasureTextWidth(g, occurences, ItalicBigFont);
			if (icon != null) {
				x += icon.Width;
			}
			return x + 3;
		}
Exemplo n.º 22
0
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            const int SPACE_IL = 3;  // space between Image and Label

            // we only do additional drawing
            //e.DrawDefault = true;

            base.OnDrawNode(e);

            if (base.ShowLines && base.ImageList != null && e.Node.ImageIndex == NOIMAGE
                // exclude root nodes, if root lines are disabled
                //&& (base.ShowRootLines || e.Node.Level > 0))
                )
            {
                // Using lines & images, but this node has none: fill up missing treelines

                // Image size
                int imgW = base.ImageList.ImageSize.Width;
                int imgH = base.ImageList.ImageSize.Height;

                // Image center
                int xPos = e.Node.Bounds.Left - SPACE_IL - imgW / 2;
                int yPos = (e.Node.Bounds.Top + e.Node.Bounds.Bottom) / 2;

                // Image rect
                Rectangle imgRect = new Rectangle(xPos, yPos, 0, 0);
                imgRect.Inflate(imgW / 2, imgH / 2);

                using (Pen p = new Pen(base.LineColor, 1))
                {
                    p.DashStyle = DashStyle.Custom;

                    // account uneven Indent for both lines
                    p.DashOffset = base.Indent % 2;

                    // Horizontal treeline across width of image
                    // account uneven half of delta ItemHeight & ImageHeight
                    int yHor = yPos + ((base.ItemHeight - imgRect.Height) / 2) % 2;

                    e.Graphics.DrawLine(p, 
                        (base.ShowRootLines || e.Node.Level > 0) ? imgRect.Left : xPos - (int)p.DashOffset,
                        yHor, imgRect.Right, yHor);

                    
                    if (!base.CheckBoxes && e.Node.IsExpanded)
                    {
                        // Vertical treeline , offspring from NodeImage center to e.Node.Bounds.Bottom
                        // yStartPos: account uneven Indent and uneven half of delta ItemHeight & ImageHeight
 
                        int yVer = yHor + (int)p.DashOffset;
                        e.Graphics.DrawLine(p, xPos, yVer, xPos, e.Node.Bounds.Bottom);
                    }
                }
            }
        }
Exemplo n.º 23
0
		protected override int MeasureItemWidth(DrawTreeNodeEventArgs e)
		{
			Graphics g = e.Graphics;
			int x = MeasureTextWidth(g, displayText, BoldMonospacedFont);
			if (ShowFileName) {
				float tabWidth = drawableLine.GetSpaceSize(g).Width * 6;
				x = (int)((int)((x + 2 + tabWidth) / tabWidth) * tabWidth);
				x += MeasureTextWidth(g, FileNameText, ItalicBigFont);
			}
			return x;
		}
Exemplo n.º 24
0
		protected override void DrawForeground(DrawTreeNodeEventArgs e)
		{
			Graphics g = e.Graphics;
			float x = e.Bounds.X;
			if (icon != null) {
				g.DrawImage(icon, x, e.Bounds.Y, icon.Width, icon.Height);
				x += icon.Width + 2;
			}
			DrawText(e, fileNameText, SystemBrushes.WindowText, RegularBigFont, ref x);
			DrawText(e, occurences, SystemBrushes.GrayText,  ItalicBigFont, ref x);
		}
Exemplo n.º 25
0
		protected override void DrawForeground(DrawTreeNodeEventArgs e)
		{
			Graphics g = e.Graphics;
			float x = e.Bounds.X;
			DrawText(e, positionText, SystemBrushes.WindowText, RegularBigFont, ref x);
			
			spaceSize = g.MeasureString("-", RegularBigFont,  new PointF(0, 0), StringFormat.GenericTypographic);
			
//			if (line != null && !line.IsDeleted) {
//				DrawLine(g, line, e.Bounds.Y, x, e.State);
//			}
		}
Exemplo n.º 26
0
 void MyTree_DrawNode(object sender, DrawTreeNodeEventArgs e)
 {
     Brush pen = Brushes.Black;
     if ((e.State & TreeNodeStates.Selected) != 0)
     {
         //演示为蓝底白字
         e.Graphics.FillRectangle(Brushes.Blue, e.Node.Bounds);
         pen = Brushes.White;
     }
     Font nodeFont = e.Node.NodeFont;
     if (nodeFont == null) nodeFont = ((TreeView)sender).Font;
     int topPadding = (int)Math.Abs((e.Node.Bounds.Height - nodeFont.GetHeight()) / 2);
     Rectangle r = new Rectangle(e.Bounds.X, e.Bounds.Y + topPadding, e.Bounds.Width + 5, e.Bounds.Height - topPadding * 2);
     e.Graphics.DrawString(e.Node.Text, nodeFont, pen, r);
 }
Exemplo n.º 27
0
        // Create a Font object for the node tags.
        //TODO: Have code that isn't copied from MSDN...
        private static void myTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            // Draw the background and node text for a selected node.
            if ((e.State & TreeNodeStates.Selected) != 0)
            {
                Rectangle rect = NodeBounds(e.Node);
                rect.Width += 5;
                e.Graphics.FillRectangle(Brushes.Gray, rect);

                Font nodeFont = e.Node.TreeView.Font;
                //if (nodeFont == null) nodeFont = ((TreeView)sender).Font;

                Rectangle bounds = NodeBounds(e.Node);
                bounds.Width += 10;
                e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, bounds);

                e.DrawDefault = false;
            }

            // Use the default background and node text.
            else
            {
                e.DrawDefault = true;
            }

            /*
            // If a node tag is present, draw its string representation 
            // to the right of the label text.
            if (e.Node.Tag != null)
            {
                e.Graphics.DrawString(e.Node.Tag.ToString(), e.Node.TreeView.Font,
                    Brushes.Yellow, e.Bounds.Right + 2, e.Bounds.Top);
            }

            // If the node has focus, draw the focus rectangle large, making
            // it large enough to include the text of the node tag, if present.
            if ((e.State & TreeNodeStates.Focused) != 0)
            {
                using (Pen focusPen = new Pen(Color.Black))
                {
                    focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
                    Rectangle focusBounds = NodeBounds(e.Node);
                    focusBounds.Size = new Size(focusBounds.Width - 1,
                    focusBounds.Height - 1);
                    e.Graphics.DrawRectangle(focusPen, focusBounds);
                }
            }*/
        }
Exemplo n.º 28
0
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     Font font = e.Node.NodeFont ?? e.Node.TreeView.Font;
     Color fore = e.Node.ForeColor;
     if (fore == Color.Empty) fore = e.Node.TreeView.ForeColor;
     if (e.Node == e.Node.TreeView.SelectedNode) {
         fore = SystemColors.HighlightText;
         e.Graphics.FillRectangle (SystemBrushes.MenuHighlight, e.Bounds);
         ControlPaint.DrawFocusRectangle (e.Graphics, e.Bounds, fore, SystemColors.Highlight);
         TextRenderer.DrawText (e.Graphics, e.Node.Text, font, e.Bounds, fore, TextFormatFlags.GlyphOverhangPadding);
     }
     else {
         e.Graphics.FillRectangle (SystemBrushes.Window, e.Bounds);
         TextRenderer.DrawText (e.Graphics, e.Node.Text, font, e.Bounds, fore, TextFormatFlags.GlyphOverhangPadding);
     }
 }
Exemplo n.º 29
0
        void OPMTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            bool isFocused = (e.State & TreeNodeStates.Focused) == TreeNodeStates.Focused;
            bool isSelected = (e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected;

            if (isFocused == false && isSelected == false && e.Node.IsSelected == false)
            {
                e.DrawDefault = true;
                return;
            }

            ThemeManager.PrepareGraphics(e.Graphics);

            Font f = e.Node.NodeFont;
            if (f == null)
            {
                f = this.Font;
            }
            if (f == null)
            {
                f = ThemeManager.NormalFont;
            }

            SizeF sz = e.Graphics.MeasureString(e.Node.Text, f);
            Rectangle rc = new Rectangle(e.Bounds.Left, e.Bounds.Top, (int)sz.Width + 4, e.Bounds.Height - 1);

            Rectangle rcx = e.Bounds;
            rcx.Inflate(2, 2);

            using (Brush b = new SolidBrush(ThemeManager.BackColor))
            using (Brush bBack = new SolidBrush(ThemeManager.SelectedColor))
            using (Brush bFore = new SolidBrush(ThemeManager.ForeColor))
            {
                e.Graphics.FillRectangle(b, rcx);
                e.Graphics.FillRectangle(bBack, rc);

                StringFormat sf = new StringFormat();
                sf.Alignment = StringAlignment.Near;
                sf.LineAlignment = StringAlignment.Center;
                sf.FormatFlags = StringFormatFlags.NoWrap;
                sf.Trimming = StringTrimming.EllipsisWord;

                e.Graphics.DrawString(e.Node.Text, f, bFore, rc, sf);
            }
        }
Exemplo n.º 30
0
 void LegendControl_DrawNode(object sender, DrawTreeNodeEventArgs e)
 {
     if (e.Node.Level == 0)
     {
         //����ͼ����Ͻڵ�
         this.DrawLayerGroupNode(e);
     }
     else if (e.Node.Level == 1)
     {
         //����Ϳ��ڵ�
         this.DrawLayerNode(e);
     }
     else if (e.Node.Level == 2)
     {
         //������ɫ���нڵ�
         this.DrawColorSchemdualNode(e);
     }
 }
Exemplo n.º 31
0
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            Graphics g = e.Graphics;
            TreeNode n = e.Node;
            Font f = Font;

            int indent = 20 * e.Node.Level;

            string text = e.Node.Text;
            string[] lines = text.Split('\n');
            int width = 0;
            foreach (string line in lines)
            {
                int lineWidth = TextRenderer.MeasureText(line, f).Width;
                if (lineWidth > width)
                    width = lineWidth;
            }

            Rectangle bounds = new Rectangle(e.Bounds.X+indent, e.Bounds.Y, Math.Max(width+4, Width-indent), e.Bounds.Height);
            Rectangle textRect = Rectangle.Inflate(bounds, 1, 0);       // to align with mouse-over tooltip
            TextFormatFlags format = TextFormatFlags.Top;
            if (e.Node.Tag == null)  // category, center it
            {
                f = new Font(f.Name, f.Size*1.5f, f.Style, f.Unit);
                format = TextFormatFlags.VerticalCenter;
            }
            format |= TextFormatFlags.NoPrefix;

            g.FillRectangle(SystemBrushes.Window, e.Bounds);

            if ((e.State & TreeNodeStates.Selected) != 0 || (e.State & TreeNodeStates.Grayed) != 0)
            {
                g.FillRectangle(SystemBrushes.Highlight, bounds);
                TextRenderer.DrawText(g, text, f, textRect, SystemColors.HighlightText, SystemColors.Highlight, format);
            }
            else
                TextRenderer.DrawText(g, text, f, textRect, SystemColors.WindowText, SystemColors.Window, format);

            g.DrawLine(SystemPens.ControlLight, bounds.Left, bounds.Bottom-1, Width, bounds.Bottom-1);

            base.OnDrawNode(e);
        }
Exemplo n.º 32
0
        private void AdvancedTreeView_DrawNode(object sender, System.Windows.Forms.DrawTreeNodeEventArgs e)
        {
            if (this.NodeTextChanging)
            {
                if (e.Node != this.SelectedNode || this.snDrawed)
                {
                    return;
                }
                this.snDrawed = true;
            }
            else
            {
                this.snDrawed = false;
            }
            Color     TextColor  = this.ForeColor;
            Rectangle NodeBounds = this.GetNodeBounds(e.Node);

            if ((e.State & TreeNodeStates.Selected) != 0 || e.Node == this.SelectedNode)
            {
                e.Graphics.FillRectangle(SystemBrushes.Highlight, NodeBounds);
                TextColor = SystemColors.HighlightText;
                using (Pen FocusPen = new Pen(Color.Black))
                {
                    FocusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
                    NodeBounds.Size    = new Size(NodeBounds.Width - 1, NodeBounds.Height - 1);
                    e.Graphics.DrawRectangle(FocusPen, NodeBounds);
                }
            }
            else if (e.Node.Parent != null && !((TreeNodeEx)e.Node).Enabled)
            {
                TextColor = Color.Gray;
            }
            string index_string = "";

            if (e.Node.Parent != null)
            {
                index_string = ((TreeNodeEx)e.Node).Enabled ? this.GetNodeIndexWODisabledNodes(e.Node.Parent, e.Node) + ". " : "    ";
            }
            e.Graphics.DrawString(index_string + e.Node.Text, this.Font, new SolidBrush(TextColor), e.Bounds.Location);
        }
Exemplo n.º 33
0
		internal static void DrawSearchResultNodeText (object sender, DrawTreeNodeEventArgs e)
		{
            Font nodeFont = e.Node.NodeFont;
            if (nodeFont == null)
				nodeFont = ((TreeView)sender).Font;
			var clip = new Rectangle (0, e.Bounds.Y, e.Node.TreeView.Width, e.Bounds.Height);
			e.Graphics.SetClip (clip);
			var selectedStates = TreeNodeStates.Marked | TreeNodeStates.Selected | TreeNodeStates.Focused;

			if (e.Node.Tag == null) {
				nodeFont = new Font (nodeFont.FontFamily, nodeFont.Size - 2);
				// We use a TabRenderer to get the nice system gradient
				e.Graphics.Clear (Color.White);
				clip = new Rectangle (1, e.Bounds.Y + 1, e.Node.TreeView.ClientRectangle.Width - 3, e.Bounds.Height - 3);
				TabRenderer.DrawTabItem (e.Graphics, clip, e.Node.Text, nodeFont, System.Windows.Forms.VisualStyles.TabItemState.Normal);
				using (var pen = new Pen (Color.Black, 1.0f))
					e.Graphics.DrawLine (pen, new Point (clip.Left, clip.Bottom), new Point (clip.Right - 1, clip.Bottom));
			} else {
				e.Graphics.Clear ((e.State & selectedStates) != 0 ? SystemColors.Highlight : SystemColors.ControlLightLight);
				e.Graphics.DrawString (e.Node.Text, nodeFont, (e.State & selectedStates) != 0 ? SystemBrushes.HighlightText : SystemBrushes.ControlText, new PointF (e.Bounds.X, e.Bounds.Y + 2));
			}
		}
Exemplo n.º 34
0
        private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            //treeView1.BeginUpdate();
            #region 1     选中的节点背景=========================================
            Rectangle nodeRect = new Rectangle(1,
                                               e.Bounds.Top,
                                               e.Bounds.Width - 3,
                                               e.Bounds.Height - 1);

            if (e.Node.IsSelected)
            {
                //TreeView有焦点的时候 画选中的节点
                if (treeView1.Focused || textBox1.Visible)
                {
                    e.Graphics.FillRectangle(brush1, nodeRect);
                    e.Graphics.DrawRectangle(pen1, nodeRect);

                    /*测试 画聚焦的边框*/
                    //ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, Color.Black, SystemColors.Highlight);
                }
                /*TreeView失去焦点的时候 */
                else
                {
                    e.Graphics.FillRectangle(brush2, nodeRect);
                    e.Graphics.DrawRectangle(pen2, nodeRect);
                }
            }
            else if ((e.State & TreeNodeStates.Hot) != 0 && e.Node.Text != "")//|| currentMouseMoveNode == e.Node)
            {
                e.Graphics.FillRectangle(brush3, nodeRect);
                e.Graphics.DrawRectangle(pen3, nodeRect);
            }
            else
            {
                e.Graphics.FillRectangle(new SolidBrush(treeView1.BackColor), e.Bounds);
            }
            #endregion

            #region 2     +-号绘制=========================================
            Rectangle plusRect = new Rectangle(e.Node.Bounds.Left - 32, nodeRect.Top + 7, 9, 9); // +-号的大小 是9 * 9
            if (e.Node.IsExpanded && e.Node.Nodes.Count > 0)
            {
                //treeView1.Refresh();
                for (int i = 0; i < treeView1.Nodes.Count; i++)
                {
                    e.Graphics.DrawImage(minusPictureBox1.Image, plusRect);
                }
            }
            else if (e.Node.IsExpanded == false && e.Node.Nodes.Count > 0)
            {
                //treeView1.Refresh();
                for (int i = 0; i < treeView1.Nodes.Count; i++)
                {
                    e.Graphics.DrawImage(plusPictureBox1.Image, plusRect);
                }
            }

            TreeViewHitTestInfo info = treeView1.HitTest(pt);
            if (treeNode1 != null && info.Location == TreeViewHitTestLocations.PlusMinus && treeNode1 == e.Node)
            {
                if (treeNode1.IsExpanded && treeNode1.Nodes.Count > 0)
                {
                    e.Graphics.DrawImage(minusPictureBox2.Image, plusRect);
                }
                else if (treeNode1.IsExpanded == false && treeNode1.Nodes.Count > 0)
                {
                    e.Graphics.DrawImage(plusPictureBox2.Image, plusRect);
                }
            }


            /*测试用 画出+-号出现的矩形*/
            //if (e.Node.Nodes.Count > 0)
            //    e.Graphics.DrawRectangle(new Pen(Color.Red), plusRect);
            #endregion

            #region 3     画节点文本=========================================
            Rectangle nodeTextRect = new Rectangle(
                e.Node.Bounds.Left,
                e.Node.Bounds.Top + 2,
                e.Node.Bounds.Width + 2,
                e.Node.Bounds.Height
                );
            nodeTextRect.Width  += 4;
            nodeTextRect.Height -= 4;

            e.Graphics.DrawString(e.Node.Text,
                                  e.Node.TreeView.Font,
                                  new SolidBrush(treeView1.ForeColor),
                                  nodeTextRect);


            ////画子节点上文件的个数 (111)
            if (e.Node.Text != "" &&
                Directory.Exists(rootpath + "\\" + e.Node.FullPath))
            {
                string[] filelist = Directory.GetFiles(rootpath + "\\" + e.Node.FullPath, "*.htm");
                nodeTextRect.Width  += 4;
                nodeTextRect.Height -= 4;
                //画子节点个数 (111)
                if (e.Node.Text != "" && filelist.Length > 0)
                {
                    e.Graphics.DrawString(string.Format("({0})", filelist.Length),
                                          new Font("Arial", 8),
                                          Brushes.Gray,
                                          nodeTextRect.Right - 4,
                                          nodeTextRect.Top + 2);
                }
            }

            Rectangle r = e.Node.Bounds;
            r.Height -= 2;
            ///*测试用,画文字出现的矩形*/
            //if (e.Node.Text != "")
            //    e.Graphics.DrawRectangle(new Pen(Color.Blue), r);
            #endregion

            #region 4   画IImageList 中的图标===================================================================

            int currt_X = e.Node.Bounds.X;
            if (treeView1.ImageList != null && treeView1.ImageList.Images.Count > 0)
            {
                //图标大小16*16
                Rectangle imagebox = new Rectangle(
                    e.Node.Bounds.X - 3 - 16,
                    e.Node.Bounds.Y + 3,
                    16,  //IMAGELIST IMAGE WIDTH
                    16); //HEIGHT


                int    index    = e.Node.ImageIndex;
                string imagekey = e.Node.ImageKey;
                if (imagekey != "" && treeView1.ImageList.Images.ContainsKey(imagekey))
                {
                    e.Graphics.DrawImage(treeView1.ImageList.Images[imagekey], imagebox);
                }
                else
                {
                    if (e.Node.ImageIndex < 0)
                    {
                        index = 0;
                    }
                    else if (index > treeView1.ImageList.Images.Count - 1)
                    {
                        index = 0;
                    }
                    e.Graphics.DrawImage(treeView1.ImageList.Images[index], imagebox);
                }
                currt_X -= 19;

                /*测试 画IMAGELIST的矩形*/
                //if (e.Node.ImageIndex > 0)
                //    e.Graphics.DrawRectangle(new Pen(Color.Black, 1), imagebox);
            }
            #endregion

            #region 测试 画所有的边框
            //nodeRect = new Rectangle(1,
            //             e.Bounds.Top + 1,
            //             e.Bounds.Width - 3,
            //             e.Bounds.Height - 2);
            //e.Graphics.DrawRectangle(new Pen(Color.Gray), nodeRect);
            #endregion
            //treeView1.EndUpdate();
        }
Exemplo n.º 35
0
        private void OnDrawNode(Object sender, DrawTreeNodeEventArgs e)
        {
            e.DrawDefault = false;
            Rectangle  bounds    = e.Node.Bounds;
            Color      backHl    = PluginBase.MainForm.GetThemeColor("TreeView.Highlight", SystemColors.Highlight);
            Color      foreHl    = PluginBase.MainForm.GetThemeColor("TreeView.HighlightText", SystemColors.HighlightText);
            SolidBrush brushFore = new SolidBrush(e.Node.TreeView.LineColor);
            SolidBrush brushBack = new SolidBrush(e.Node.TreeView.BackColor);

            if (bounds.IsEmpty || !e.Node.IsVisible)
            {
                return;
            }
            if ((e.State & TreeNodeStates.Focused) != 0)
            {
                e.Graphics.FillRectangle(new SolidBrush(backHl), Rectangle.Inflate(bounds, 1, 0));
            }
            else if ((e.State & TreeNodeStates.Selected) != 0)
            {
                e.Graphics.FillRectangle(new SolidBrush(Color.Gray), Rectangle.Inflate(bounds, 1, 0));
            }
            else
            {
                e.Graphics.FillRectangle(brushBack, bounds);
            }
            if (e.Node.Nodes.Count > 0)
            {
                Point[] arrow;
                Point   middle = new Point(bounds.Left - 28, bounds.Top + bounds.Height / 2);
                if (e.Node.IsExpanded)
                {
                    arrow = new Point[]
                    {
                        new Point(middle.X - SIZE3, middle.Y - 1),
                        new Point(middle.X + SIZE3 + 1, middle.Y - 1),
                        new Point(middle.X, middle.Y + SIZE3)
                    };
                    e.Graphics.FillPolygon(brushFore, arrow);
                    arrow = new Point[]
                    {
                        new Point(middle.X - SIZE1, middle.Y - 1),
                        new Point(middle.X + SIZE1 + 1, middle.Y - 1),
                        new Point(middle.X, middle.Y + SIZE1)
                    };
                    e.Graphics.FillPolygon(brushBack, arrow);
                }
                else
                {
                    arrow = new Point[]
                    {
                        new Point(middle.X - SIZE2, middle.Y - 2 * SIZE2),
                        new Point(middle.X - SIZE2, middle.Y + 2 * SIZE2),
                        new Point(middle.X + SIZE2, middle.Y)
                    };
                    e.Graphics.FillPolygon(brushFore, arrow);
                    arrow = new Point[]
                    {
                        new Point(middle.X - SIZE1 - 1, middle.Y - 2 * SIZE1),
                        new Point(middle.X - SIZE1 - 1, middle.Y + 2 * SIZE1),
                        new Point(middle.X + SIZE1 - 1, middle.Y)
                    };
                    e.Graphics.FillPolygon(brushBack, arrow);
                }
            }
            if (e.Node.ImageIndex != -1)
            {
                Point nodePt  = new Point(bounds.Location.X - 20, bounds.Location.Y + 1);
                Image nodeImg = e.Node.TreeView.ImageList.Images[e.Node.ImageIndex];
                e.Graphics.DrawImage(nodeImg, nodePt);
            }
            Rectangle textRect  = bounds;
            Font      nodeFont  = e.Node.NodeFont;
            Color     textColor = e.Node.ForeColor;

            textRect = Rectangle.Inflate(textRect, 2, 0);
            if (nodeFont == null)
            {
                nodeFont = ((TreeView)sender).Font;
            }
            if (nodeFont.Bold)
            {
                textRect.X += 1;
            }
            if ((e.State & TreeNodeStates.Focused) != 0)
            {
                textColor = foreHl;
            }
            if ((e.State & TreeNodeStates.Selected) != 0)
            {
                textColor = foreHl;
            }
            if ((e.State & TreeNodeStates.Hot) != 0)
            {
                nodeFont = new Font(nodeFont, FontStyle.Underline);
            }
            TextRenderer.DrawText(e.Graphics, e.Node.Text, nodeFont, textRect, textColor);
        }
Exemplo n.º 36
0
        private void treeView1_DrawNode(object sender, System.Windows.Forms.DrawTreeNodeEventArgs e)
        {
            int _offsetX = (e.Node.Level * this.treeView1.Indent);

            Size _textSize = e.Graphics.MeasureString(
                e.Node.Text,
                this.Font).ToSize();

            try
            {
                if (e.Node.Nodes.Count > 0)
                {
                    Image _image   = this.imageList1.Images[0];
                    int   _offsetY = (int)Math.Ceiling((_textSize.Height - _image.Height) / 2f);
                    e.Graphics.DrawImage(_image, e.Bounds.X + _offsetX, e.Bounds.Y + _offsetY);
                }
            }
            catch { }

            _offsetX += (int)(this.imageList1.ImageSize.Width * 1.5f);

            Rectangle _rectangle = new Rectangle(
                e.Bounds.X + _offsetX,
                e.Bounds.Y,
                _textSize.Width,
                _textSize.Height);

            if (!((Bookmark)e.Node.Tag).Enabled)
            {
                e.Graphics.FillRectangle(
                    new SolidBrush(SystemColors.ControlLightLight),  //NOTE: tle bi sicer moralo bit this.BackColor, samo tu ni tu
                    _rectangle);

                e.Graphics.DrawString(
                    e.Node.Text,
                    this.Font,
                    new SolidBrush(SystemColors.InactiveCaption),
                    e.Bounds.X + _offsetX,
                    e.Bounds.Y);
            }
            else if (e.Node.Tag == this.selectedBookmark)
            {
                if (this.selectedBookmark != null)
                {
                    //System.Diagnostics.Debug.WriteLine("*" + this.selectedBookmark.Title);
                    //System.Diagnostics.Debug.WriteLine(((Bookmark)e.Node.Tag).Title);
                }

                e.Graphics.FillRectangle(
                    new SolidBrush(SystemColors.MenuHighlight),
                    _rectangle);

                e.Graphics.DrawString(
                    e.Node.Text,
                    this.Font,
                    new SolidBrush(SystemColors.HighlightText),
                    e.Bounds.X + _offsetX,
                    e.Bounds.Y);
            }
            else
            {
                e.Graphics.FillRectangle(
                    new SolidBrush(SystemColors.ControlLightLight),  //NOTE: tle bi sicer moralo bit this.BackColor, samo tu ni tu
                    _rectangle);

                e.Graphics.DrawString(
                    e.Node.Text,
                    this.Font,
                    new SolidBrush(this.ForeColor),
                    e.Bounds.X + _offsetX,
                    e.Bounds.Y);
            }
        }
Exemplo n.º 37
0
 protected virtual void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     throw null;
 }
Exemplo n.º 38
0
        private void DrawNodeDefault(object sender, DrawTreeNodeEventArgs e)
        {
            const int TEXT_SELECTION_MARGIN_LEFT  = 4;
            const int TEXT_SELECTION_MARGIN_RIGHT = 4;
            const int TEXT_SELECTION_HMARGIN      = TEXT_SELECTION_MARGIN_LEFT + TEXT_SELECTION_MARGIN_RIGHT;
            const int TEXT_MARGIN_TOP             = 2;
            const int TEXT_MARGIN_BOTTOM          = 2;

            var node              = e.Node;
            var nodeBounds        = node.Bounds;
            var nodeX             = nodeBounds.X;
            var nodeY             = nodeBounds.Y;
            var nodeWidth         = nodeBounds.Width;
            var nodeContainsArrow = node.Nodes.Count > 0;
            var nodeContainsImage = node.ImageIndex > -1 && ImageList != null;

            var graphics = e.Graphics;

            // Node drawing.
            graphics.uwfFillRectangle(node.BackColor, nodeBounds.X, nodeY, nodeWidth, nodeBounds.Height);

            // Draw selection.
            if (node.IsSelected || node == hoveredNode)
            {
                var nodeFillColor = node.IsSelected ? uwfItemSelectedColor : uwfItemHoveredColor;
                if (node.IsSelected && !Focused)
                {
                    nodeFillColor = uwfItemSelectedUnfocusedColor;
                }

                var selectX      = 0;
                var selectY      = nodeY;
                var selectWidth  = Width;
                var selectHeight = ItemHeight;

                if (!FullRowSelect)
                {
                    selectX     = nodeX + arrowSize;
                    selectWidth = node.textWidth;

                    if (nodeContainsImage)
                    {
                        selectWidth += nodeBounds.Height - TEXT_SELECTION_MARGIN_LEFT;
                    }
                    else
                    {
                        selectX -= TEXT_SELECTION_MARGIN_LEFT;
                    }
                }

                graphics.uwfFillRectangle(nodeFillColor, selectX, selectY, selectWidth, selectHeight);
            }

            int xOffset = nodeBounds.X;

            // Draw collapsed/expanded arrow.
            if (nodeContainsArrow)
            {
                var arrowTexture = (Bitmap)null;

                if (node.IsExpanded)
                {
                    if (node.ImageIndex_Expanded > -1 && ImageList != null)
                    {
                        var img = ImageList.Images[node.ImageIndex_Expanded];
                        if (img != null)
                        {
                            arrowTexture = img as Bitmap;
                        }
                    }
                    else
                    {
                        arrowTexture = uwfAppOwner.Resources.TreeNodeExpanded;
                    }
                }
                else
                {
                    if (node.ImageIndex_Collapsed > -1 && ImageList != null)
                    {
                        var img = ImageList.Images[node.ImageIndex_Collapsed];
                        if (img != null)
                        {
                            arrowTexture = img as Bitmap;
                        }
                    }
                    else
                    {
                        arrowTexture = uwfAppOwner.Resources.TreeNodeCollapsed;
                    }
                }

                if (arrowTexture != null)
                {
                    var mouseClient = PointToClient(MousePosition);
                    var arrowWidth  = arrowSize;
                    var arrowHeight = arrowSize;
                    var arrowX      = xOffset;
                    var arrowY      = nodeY + nodeBounds.Height / 2f - arrowHeight / 2f;
                    var arrowColor  = uwfArrowImageColor;

                    // Check if arrow is hovered.
                    if (nodeBounds.Contains(mouseClient) && mouseClient.X <= arrowX + arrowWidth)
                    {
                        arrowColor = uwfArrowImageHoveredColor;
                    }

                    graphics.uwfDrawImage(arrowTexture, arrowColor, arrowX, arrowY, arrowWidth, arrowHeight);
                }
            }

            xOffset += arrowSize;

            // Draw image.
            if (nodeContainsImage)
            {
                var image = ImageList.Images[node.ImageIndex];
                if (image != null && image.Texture != null)
                {
                    var imageSize = Math.Min(nodeBounds.Height - 2, image.Height);
                    var imageX    = xOffset + (nodeBounds.Height - imageSize) / 2f;
                    var imageY    = nodeY + (nodeBounds.Height - imageSize) / 2f;

                    graphics.uwfDrawImage(image, node.ImageColor, imageX, imageY, imageSize, imageSize);

                    xOffset += nodeBounds.Height;
                }
            }

            // Draw text.
            var nodeText = node.Text;

            if (nodeText == null && node.Tag != null)
            {
                nodeText = node.Tag.ToString();
                if (nodeText != node.tagString)
                {
                    node.textWidth = 0;
                    node.tagString = nodeText;
                }
            }

            if (node.textWidth == 0)
            {
                node.textWidth = (int)graphics.MeasureString(nodeText, Font).Width + TEXT_SELECTION_HMARGIN;
            }

            var nodeTextX      = xOffset;
            var nodeTextY      = nodeY - TEXT_MARGIN_TOP;
            var nodeTextWidth  = node.textWidth;
            var nodeTextHeight = e.Bounds.Height + TEXT_MARGIN_TOP + TEXT_MARGIN_BOTTOM;
            var nodeColor      = node.ForeColor.IsEmpty ? node.TreeView.ForeColor : node.ForeColor;

            graphics.uwfDrawString(nodeText, Font, nodeColor, nodeTextX, nodeTextY, nodeTextWidth, nodeTextHeight, ContentAlignment.MiddleLeft);

            // End of drawing.

            // TODO: raise when DrawNodeMode is Normal.
            var drawNode = DrawNode;

            if (drawNode != null)
            {
                drawNode(this, e);
            }
        }
Exemplo n.º 39
0
        private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            #region 1     选中的节点背景=========================================
            Rectangle nodeRect = new Rectangle(1,
                                               e.Bounds.Top,
                                               e.Bounds.Width - 3,
                                               e.Bounds.Height - 1);

            if (e.Node.IsSelected)
            {
                //TreeView有焦点的时候 画选中的节点
                if (treeView1.Focused)
                {
                    e.Graphics.FillRectangle(brush1, nodeRect);
                    e.Graphics.DrawRectangle(pen1, nodeRect);

                    /*测试 画聚焦的边框*/
                    //ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, Color.Black, SystemColors.Highlight);
                }
                /*TreeView失去焦点的时候 */
                else
                {
                    e.Graphics.FillRectangle(brush2, nodeRect);
                    e.Graphics.DrawRectangle(pen2, nodeRect);
                }
            }
            else if ((e.State & TreeNodeStates.Hot) != 0 && e.Node.Text != "")//|| currentMouseMoveNode == e.Node)
            {
                e.Graphics.FillRectangle(brush3, nodeRect);
                e.Graphics.DrawRectangle(pen3, nodeRect);
            }
            else
            {
                e.Graphics.FillRectangle(Brushes.White, e.Bounds);
            }
            #endregion

            #region 2     +-号绘制=========================================
            Rectangle plusRect = new Rectangle(e.Node.Bounds.Left - 32, nodeRect.Top + 7, 9, 9); // +-号的大小 是9 * 9

            if (e.Node.IsExpanded)
            {
                e.Graphics.DrawImage(arrowImageList.Images[1], plusRect);
            }
            else if (e.Node.IsExpanded == false && e.Node.Nodes.Count > 0)
            {
                e.Graphics.DrawImage(arrowImageList.Images[0], plusRect);
            }


            /*测试用 画出+-号出现的矩形*/
            //if (e.Node.Nodes.Count > 0)
            //    e.Graphics.DrawRectangle(new Pen(Color.Red), plusRect);
            #endregion

            #region 3     画节点文本=========================================
            Rectangle nodeTextRect = new Rectangle(
                e.Node.Bounds.Left,
                e.Node.Bounds.Top + 2,
                e.Node.Bounds.Width + 2,
                e.Node.Bounds.Height
                );
            nodeTextRect.Width  += 4;
            nodeTextRect.Height -= 4;

            e.Graphics.DrawString(e.Node.Text,
                                  e.Node.TreeView.Font,
                                  new SolidBrush(Color.Black),
                                  nodeTextRect);


            //画子节点个数 (111)
            if (e.Node.GetNodeCount(true) > 0)
            {
                e.Graphics.DrawString(string.Format("({0})", e.Node.GetNodeCount(true)),
                                      new Font("Arial", 8),
                                      Brushes.Gray,
                                      nodeTextRect.Right - 4,
                                      nodeTextRect.Top + 2);
            }

            ///*测试用,画文字出现的矩形*/
            //if (e.Node.Text != "")
            //    e.Graphics.DrawRectangle(new Pen(Color.Blue), nodeTextRect);
            #endregion

            #region 4   画IImageList 中的图标===================================================================

            int currt_X = e.Node.Bounds.X;
            if (treeView1.ImageList != null && treeView1.ImageList.Images.Count > 0)
            {
                //图标大小16*16
                Rectangle imagebox = new Rectangle(
                    e.Node.Bounds.X - 3 - 16,
                    e.Node.Bounds.Y + 3,
                    16,  //IMAGELIST IMAGE WIDTH
                    16); //HEIGHT


                int    index    = e.Node.ImageIndex;
                string imagekey = e.Node.ImageKey;
                if (imagekey != "" && treeView1.ImageList.Images.ContainsKey(imagekey))
                {
                    e.Graphics.DrawImage(treeView1.ImageList.Images[imagekey], imagebox);
                }
                else
                {
                    if (e.Node.ImageIndex < 0)
                    {
                        index = 0;
                    }
                    else if (index > treeView1.ImageList.Images.Count - 1)
                    {
                        index = 0;
                    }
                    e.Graphics.DrawImage(treeView1.ImageList.Images[index], imagebox);
                }
                currt_X -= 19;

                /*测试 画IMAGELIST的矩形*/
                //if (e.Node.ImageIndex > 0)
                //    e.Graphics.DrawRectangle(new Pen(Color.Black, 1), imagebox);
            }
            #endregion

            ///*测试 画所有的边框*/
            //nodeRect = new Rectangle(1,
            //             e.Bounds.Top + 1,
            //             e.Bounds.Width - 3,
            //             e.Bounds.Height - 2);
            //e.Graphics.DrawRectangle(new Pen(Color.Gray), nodeRect);
        }
Exemplo n.º 40
0
        private void DrawNodeDefault(object sender, DrawTreeNodeEventArgs e)
        {
            var node       = e.Node;
            var nodeBounds = node.Bounds;
            var nodeY      = nodeBounds.Y;

            var graphics = e.Graphics;

            // Node drawing.
            graphics.uwfFillRectangle(node.BackColor, nodeBounds.X, nodeY, nodeBounds.Width, nodeBounds.Height);
            if (node.IsSelected || node == hoveredNode)
            {
                var nodeFillColor = node.IsSelected ? uwfSelectionColor : uwfSelectionHoverColor;
                if (node.IsSelected && Focused == false)
                {
                    nodeFillColor = uwfSelectionUnfocusedColor;
                }

                graphics.uwfFillRectangle(nodeFillColor, uwfUseNodeBoundsForSelection ? nodeBounds.X : 0, nodeY, Width, ItemHeight);
            }

            int xOffset = nodeBounds.X;

            // Draw collapsed/expanded arrow.
            if (node.Nodes.Count > 0)
            {
                Bitmap arrowTexture = null;
                if (node.IsExpanded)
                {
                    if (node.ImageIndex_Expanded > -1 && imageList != null)
                    {
                        var img = ImageList.Images[node.ImageIndex_Expanded];
                        if (img != null)
                        {
                            arrowTexture = img as Bitmap;
                        }
                    }
                    else
                    {
                        arrowTexture = uwfAppOwner.Resources.TreeNodeExpanded;
                    }
                }
                else
                {
                    if (node.ImageIndex_Collapsed > -1 && imageList != null)
                    {
                        var img = ImageList.Images[node.ImageIndex_Collapsed];
                        if (img != null)
                        {
                            arrowTexture = img as Bitmap;
                        }
                    }
                    else
                    {
                        arrowTexture = uwfAppOwner.Resources.TreeNodeCollapsed;
                    }
                }

                if (arrowTexture != null)
                {
                    var arrowWidth  = arrowSize;
                    var arrowHeight = arrowSize;
                    graphics.DrawImage(arrowTexture, xOffset, nodeY + nodeBounds.Height / 2f - arrowHeight / 2f, arrowWidth, arrowHeight);
                }
            }

            xOffset += arrowSize;

            // Draw image.
            if (node.ImageIndex > -1 && imageList != null)
            {
                var image = imageList.Images[node.ImageIndex];
                if (image != null && image.uTexture != null)
                {
                    var imageSize = nodeBounds.Height - 2;
                    if (image.Height < imageSize)
                    {
                        imageSize = image.Height;
                    }
                    graphics.uwfDrawImage(image, node.ImageColor, xOffset + (nodeBounds.Height - imageSize) / 2f, nodeY + (nodeBounds.Height - imageSize) / 2f, imageSize, imageSize);
                    xOffset += nodeBounds.Height;
                }
            }

            // Draw text.
            string stringToDraw = node.Text;

            if (stringToDraw == null && node.Tag != null)
            {
                stringToDraw = node.Tag.ToString();
            }
            graphics.uwfDrawString(stringToDraw, Font, node.ForeColor, xOffset, nodeY - 2, (uwfWrapText ? Width : Width * 16), e.Bounds.Height + 4, ContentAlignment.MiddleLeft);
            // End of drawing.

            // TODO: raise when DrawNodeMode is Normal.
            var drawNode = DrawNode;

            if (drawNode != null)
            {
                drawNode(this, e);
            }
        }
Exemplo n.º 41
0
 protected override void OnDrawNode(DrawTreeNodeEventArgs e)
 {
     //base.OnDrawNode(e);
     DrawNodeItem(e);
     //CustomDrawNode(e);
 }
Exemplo n.º 42
0
                protected override void OnDrawNode(DrawTreeNodeEventArgs e)
                {
                    var selectionBounds = new Rectangle(e.Node.Bounds.X, e.Node.Bounds.Y, 660, e.Node.Bounds.Height);

                    if (e.Node.IsSelected || e.Node == hoveredNode)
                    {
                        var backColor = Color.FromArgb(209, 232, 255);

                        if (e.Node.IsSelected)
                        {
                            if (Focused)
                            {
                                selectionPen.Color = Color.FromArgb(60, 162, 223);
                            }
                            else
                            {
                                backColor          = Color.FromArgb(247, 247, 247);
                                selectionPen.Color = Color.FromArgb(222, 222, 222);
                            }
                        }
                        else
                        {
                            // Hovered.
                            backColor          = Color.FromArgb(229, 243, 251);
                            selectionPen.Color = Color.FromArgb(112, 192, 231);
                        }

                        e.Graphics.uwfFillRectangle(backColor, selectionBounds);
                        e.Graphics.DrawRectangle(selectionPen, selectionBounds);
                    }

                    base.OnDrawNode(e);

#if IO_SUPPORTED
                    var info = e.Node.Tag as FileInfo;
                    if (info == null)
                    {
                        return;
                    }

                    var fInfo = info.Info;
                    if (fInfo == null)
                    {
                        return;
                    }

                    var foreColor = e.Node.ForeColor;
                    if (foreColor.IsEmpty)
                    {
                        foreColor = ForeColor;
                    }

                    e.Graphics.uwfDrawString(
                        fInfo.LastWriteTime.ToString("dd.MM.yyyy HH:mm"),
                        Font,
                        foreColor,
                        selectionBounds.X + 440,
                        selectionBounds.Y,
                        200,
                        selectionBounds.Height);

                    e.Graphics.uwfDrawString(
                        info.sizeStr,
                        Font,
                        foreColor,
                        selectionBounds.X + 400,
                        selectionBounds.Y,
                        selectionBounds.Width - 412,
                        selectionBounds.Height,
                        ContentAlignment.MiddleRight);
#endif
                }
Exemplo n.º 43
0
        private void CustomDrawNode(DrawTreeNodeEventArgs e)
        {
            const int int_CheckBoxWidth   = 14;
            const int int_RowWidth        = 9;
            const int int_ExpandeboxWidth = 15;

            //if (this.CheckBoxes)
            //{
            TreeNode node       = e.Node;
            int      currt_X    = node.Bounds.X;
            Pen      penText    = new Pen(Color.Red, 1);
            Pen      penDotline = new Pen(Color.Gray, 1);

            //文字部分
            Font  font  = new Font("SimSun", 12F, GraphicsUnit.Pixel);
            Brush brush = new SolidBrush(node.TreeView.BackColor);

            byte[]    sarr       = System.Text.Encoding.Default.GetBytes(node.Text);
            int       textlength = sarr.Length;
            Rectangle rcText     = new Rectangle(node.Bounds.Left + 2, e.Bounds.Top + 2, textlength * 6 + 5, e.Bounds.Height - 3);

            if (e.Node.TreeView.SelectedNode == node)
            {
                if (e.State == TreeNodeStates.Selected)
                {
                    brush = new SolidBrush(Color.FromArgb(236, 233, 216));
                    e.Graphics.FillRectangle(brush, new Rectangle(rcText.Location, new Size(textlength * 6 + 5, rcText.Height)));
                    TextRenderer.DrawText(e.Graphics, node.Text, font, rcText, Color.Red, Color.Transparent, TextFormatFlags.Left);
                }
                else
                {
                    brush = new SolidBrush(Color.FromArgb(10, 36, 106));
                    e.Graphics.FillRectangle(brush, new Rectangle(rcText.Location, new Size(textlength * 6 + 5, rcText.Height)));
                    Pen penDotline2 = new Pen(Color.Black, 1);
                    penDotline2.DashStyle = DashStyle.Dot;
                    e.Graphics.DrawRectangle(penDotline2, new Rectangle(node.Bounds.Left + 1, e.Bounds.Top + 1, textlength * 6 + 6, e.Bounds.Height - 2));
                    TextRenderer.DrawText(e.Graphics, node.Text, font, rcText, Color.White, Color.Transparent, TextFormatFlags.Left);
                }
            }
            else
            {
                TextRenderer.DrawText(e.Graphics, node.Text, font, rcText, Color.Red, Color.Transparent, TextFormatFlags.Left);
            }

            //画image
            if (this.ImageList != null && this.ImageList.Images.Count != 0)
            {
                //画image
                Rectangle imagebox = new Rectangle(currt_X - 3 - 16, node.Bounds.Y + 1, 16, 14);
                int       index    = node.ImageIndex;
                string    imagekey = node.ImageKey;
                if (imagekey != "" && this.ImageList.Images.ContainsKey(imagekey))
                {
                    e.Graphics.DrawImage(this.ImageList.Images[imagekey], imagebox);
                }
                else
                {
                    if (index < 0)
                    {
                        index = 0;
                    }
                    else if (index > this.ImageList.Images.Count - 1)
                    {
                        index = 0;
                    }
                    e.Graphics.DrawImage(this.ImageList.Images[index], imagebox);
                }
                e.Graphics.DrawRectangle(new Pen(Color.Black, 1), imagebox);

                currt_X -= 19;
            }

            //画checkbox
            if (this.CheckBoxes)
            {
                Rectangle rcCheck = new Rectangle(node.Bounds.X - int_CheckBoxWidth, node.Bounds.Y, int_CheckBoxWidth, int_CheckBoxWidth);
                using (Bitmap bmp = new Bitmap(node.Checked ?Properties.Resources.check : Properties.Resources.expan1))
                {
                    e.Graphics.DrawImage(bmp, rcCheck);
                    //DrawUtil.DrawBitmapWithTransparent(e.Graphics, bmp, rcCheck, 0, bmp.Height / 4, bmp.Width, bmp.Height / 4, Color.Magenta, true);
                }
                currt_X = currt_X - int_CheckBoxWidth - 3;
            }

            //画线
            if (node.TreeView.ShowLines)
            {
                penDotline.DashStyle = DashStyle.Dot;
                e.Graphics.DrawLine(penDotline, currt_X, node.Bounds.Top + node.Bounds.Height / 2 + 1, currt_X - int_RowWidth, node.Bounds.Top + node.Bounds.Height / 2 + 1);
                if (node.NextNode != null)
                {
                    if (node.TreeView.Nodes[0] == node)
                    {
                        e.Graphics.DrawLine(penDotline, currt_X - 9, node.Bounds.Bottom, currt_X - 9, node.Bounds.Bottom - node.Bounds.Height / 2 - 1);
                    }
                    else
                    {
                        e.Graphics.DrawLine(penDotline, currt_X - 9, node.Bounds.Top, currt_X - 9, node.Bounds.Bottom);
                    }
                }
                else if (node.TreeView.Nodes[0] == node)
                {
                }
                else
                {
                    e.Graphics.DrawLine(penDotline, currt_X - 9, node.Bounds.Top, currt_X - 9, node.Bounds.Top + node.Bounds.Height / 2 + 2);
                }
                int      level      = node.Level;
                TreeNode parentnode = new TreeNode();
                if (level != 0)
                {
                    parentnode = node.Parent;
                    while (level > 0)
                    {
                        if (parentnode.NextNode != null)
                        {
                            e.Graphics.DrawLine(penDotline, parentnode.Bounds.X - (node.Bounds.X - currt_X + 9), parentnode.Bounds.Bottom, parentnode.Bounds.X - (node.Bounds.X - currt_X + 9), parentnode.NextNode.Bounds.Top);
                        }
                        parentnode = parentnode.Parent;
                        level--;
                    }
                }
                currt_X = currt_X - 9;
            }


            //画+ -框
            if (e.Node.Nodes.Count > 0)
            {
                Rectangle rcExpandebox = new Rectangle(currt_X - int_ExpandeboxWidth / 2, node.Bounds.Y + int_ExpandeboxWidth / 2, int_ExpandeboxWidth, int_ExpandeboxWidth);
                //e.Graphics.FillRectangle(new SolidBrush(node.TreeView.BackColor), new Rectangle(rcExpandebox.X, rcExpandebox.Y, 9, 9));
                //penDotline.DashStyle = DashStyle.Solid;
                //e.Graphics.DrawRectangle(penDotline, rcExpandebox);
                //e.Graphics.DrawLine(penText, rcExpandebox.Left + 2, rcExpandebox.Top + 4, rcExpandebox.Right - 2, rcExpandebox.Top + 4);
                //if (!node.IsExpanded)
                //{
                //    e.Graphics.DrawLine(penText, rcExpandebox.Left + 4, rcExpandebox.Top + 2, rcExpandebox.Left + 4, rcExpandebox.Top + 6);
                //}
                if (!node.IsExpanded)
                {
                    e.Graphics.DrawImage(Properties.Resources.unexpan, rcExpandebox);
                }
                else
                {
                    e.Graphics.DrawImage(Properties.Resources.expan, rcExpandebox);
                }
            }
            //}
            //else { e.DrawDefault = true; }
        }
Exemplo n.º 44
0
        private void _OnDrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            var node  = e.Node;
            var nodeY = node.Bounds.Y - scrollIndex; // TODO: to node.Bounds.Y

            // Node drawing.
            e.Graphics.FillRectangle(node.BackColor, node.Bounds.X, nodeY, node.Bounds.Width, node.Bounds.Height);
            if (node.IsSelected || node == _hoveredNode)
            {
                e.Graphics.FillRectangle((node.IsSelected ? SelectionColor : SelectionHoverColor), UseNodeBoundsForSelection ? node.Bounds.X : 0, nodeY, Width, ItemHeight);
            }

            int xOffset = node.Bounds.X;

            // Draw collapsed/expanded arrow.
            if (node.Nodes.Count > 0)
            {
                UnityEngine.Texture2D arrowTexture = null;
                if (node.IsExpanded)
                {
                    if (node.ImageIndex_Expanded > -1)
                    {
                        var img = ImageList.Images[node.ImageIndex_Expanded];
                        if (img != null)
                        {
                            arrowTexture = img.uTexture;
                        }
                    }
                    else
                    {
                        arrowTexture = ApplicationBehaviour.Resources.Images.TreeNodeExpanded;
                    }
                }
                else
                {
                    if (node.ImageIndex_Collapsed > -1)
                    {
                        var img = ImageList.Images[node.ImageIndex_Collapsed];
                        if (img != null)
                        {
                            arrowTexture = img.uTexture;
                        }
                    }
                    else
                    {
                        arrowTexture = ApplicationBehaviour.Resources.Images.TreeNodeCollapsed;
                    }
                }

                if (arrowTexture != null)
                {
                    e.Graphics.DrawTexture(arrowTexture, xOffset, nodeY + node.Bounds.Height / 2 - arrowTexture.height / 2, arrowTexture.width, arrowTexture.height);
                    xOffset += arrowTexture.width;
                }
            }

            // Draw image.
            if (node.ImageIndex > -1)
            {
                var image = ImageList.Images[node.ImageIndex];
                if (image != null && image.uTexture != null)
                {
                    e.Graphics.DrawTexture(image.uTexture, xOffset, nodeY + node.Bounds.Height / 2 - image.Height / 2, image.Width, image.Height, node.ImageColor);
                    xOffset += image.Width + 2;
                }
            }

            // Draw text.
            string stringToDraw = node.Text;

            if (stringToDraw == null && node.Tag != null)
            {
                stringToDraw = node.Tag.ToString();
            }
            e.Graphics.DrawString(stringToDraw, Font, node.ForeColor, xOffset, nodeY - 2, (WrapText ? Width : Width * 16), e.Bounds.Height + 4, ContentAlignment.MiddleLeft);
            // End of drawing.

            DrawNode(this, e);
        }
Exemplo n.º 45
0
        private void _OnDrawNode(object sender, DrawTreeNodeEventArgs e)
        {
            var node       = e.Node;
            var nodeBounds = node.Bounds;
            var nodeY      = nodeBounds.Y - ScrollIndex; // TODO: to node.Bounds.Y

            var graphics = e.Graphics;

            // Node drawing.
            graphics.uwfFillRectangle(node.BackColor, nodeBounds.X, nodeY, nodeBounds.Width, nodeBounds.Height);
            if (node.IsSelected || node == hoveredNode)
            {
                graphics.uwfFillRectangle((node.IsSelected ? SelectionColor : SelectionHoverColor), UseNodeBoundsForSelection ? nodeBounds.X : 0, nodeY, Width, ItemHeight);
            }

            int xOffset = nodeBounds.X;

            // Draw collapsed/expanded arrow.
            if (node.Nodes.Count > 0)
            {
                Bitmap arrowTexture = null;
                if (node.IsExpanded)
                {
                    if (node.ImageIndex_Expanded > -1)
                    {
                        var img = ImageList.Images[node.ImageIndex_Expanded];
                        if (img != null)
                        {
                            arrowTexture = img as Bitmap;
                        }
                    }
                    else
                    {
                        arrowTexture = uwfAppOwner.Resources.TreeNodeExpanded;
                    }
                }
                else
                {
                    if (node.ImageIndex_Collapsed > -1)
                    {
                        var img = ImageList.Images[node.ImageIndex_Collapsed];
                        if (img != null)
                        {
                            arrowTexture = img as Bitmap;
                        }
                    }
                    else
                    {
                        arrowTexture = uwfAppOwner.Resources.TreeNodeCollapsed;
                    }
                }

                if (arrowTexture != null)
                {
                    var arrowWidth  = arrowSize;
                    var arrowHeight = arrowSize;
                    graphics.DrawImage(arrowTexture, xOffset, nodeY + nodeBounds.Height / 2f - arrowHeight / 2f, arrowWidth, arrowHeight);
                }
            }

            xOffset += arrowSize;

            // Draw image.
            if (node.ImageIndex > -1)
            {
                var image = ImageList.Images[node.ImageIndex];
                if (image != null && image.uTexture != null)
                {
                    graphics.uwfDrawImage(image, node.ImageColor, xOffset, nodeY + nodeBounds.Height / 2f - image.Height / 2f, image.Width, image.Height);
                    xOffset += image.Width + 2;
                }
            }

            // Draw text.
            string stringToDraw = node.Text;

            if (stringToDraw == null && node.Tag != null)
            {
                stringToDraw = node.Tag.ToString();
            }
            graphics.uwfDrawString(stringToDraw, Font, node.ForeColor, xOffset, nodeY - 2, (WrapText ? Width : Width * 16), e.Bounds.Height + 4, ContentAlignment.MiddleLeft);
            // End of drawing.

            var drawNode = DrawNode;

            if (drawNode != null)
            {
                drawNode(this, e);
            }
        }
Exemplo n.º 46
0
        /// <summary>
        /// 自定义绘制节点
        /// </summary>
        /// <param name="e"></param>
        private void DrawNodeItem(DrawTreeNodeEventArgs e)
        {
            TreeNode tn = e.Node;

            if (tn.Level == 0)
            {
                using (Graphics g = e.Graphics)
                {
                    //绘制分组的背景
                    RenderBackgroundInternalRate(g,
                                                 e.Bounds,
                                                 GroupBgColor,
                                                 GroupBgColor,
                                                 Color.FromArgb(200, 255, 255, 255),
                                                 0.45f,
                                                 true,
                                                 300);
                    //绘制展开按扭
                    g.FillEllipse(new SolidBrush(ExpandButtonColor), ExpandButtonBounds(e.Bounds));
                    g.DrawEllipse(new Pen(Color.LightGray), ExpandButtonBounds(e.Bounds));
                    Point p1;
                    Point p2;
                    Point p3;
                    if (tn.IsExpanded)
                    {
                        p1 = new Point(ExpandButtonBounds(e.Bounds).X + 3, ExpandButtonBounds(e.Bounds).Bottom - 4);
                        p2 = new Point(ExpandButtonBounds(e.Bounds).X + (ExpandButtonSize.Width) / 2, ExpandButtonBounds(e.Bounds).Top + 5);
                        p3 = new Point(ExpandButtonBounds(e.Bounds).Right - 3, ExpandButtonBounds(e.Bounds).Bottom - 4);
                    }
                    else
                    {
                        p1 = new Point(ExpandButtonBounds(e.Bounds).X + 3, ExpandButtonBounds(e.Bounds).Y + 4);
                        p2 = new Point(ExpandButtonBounds(e.Bounds).X + (ExpandButtonSize.Width) / 2, ExpandButtonBounds(e.Bounds).Bottom - 5);
                        p3 = new Point(ExpandButtonBounds(e.Bounds).Right - 3, ExpandButtonBounds(e.Bounds).Y + 4);
                    }
                    GraphicsPath gp = new GraphicsPath();
                    gp.AddLine(p1, p2);
                    gp.AddLine(p2, p3);
                    g.DrawPath(new Pen(Color.FromArgb(255, 150, 0, 0), 2f), gp);

                    //绘制分组的文本
                    TextRenderer.DrawText(g, e.Node.Text, this.Font, GroupTitleBounds(e.Bounds), this.GroupTitleColor,
                                          TextFormatFlags.Left | TextFormatFlags.VerticalCenter | TextFormatFlags.EndEllipsis);
                }
            }
            else if (tn.Level == 1)
            {
                //e.DrawDefault = true;

                using (Graphics g = e.Graphics)
                {
                    if (tn.IsSelected)
                    {
                        TextRenderer.DrawText(g, e.Node.Text, new Font(this.Font.FontFamily.Name, this.Font.Size, FontStyle.Underline), e.Bounds, OverForeColor,
                                              TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
                    }
                    else
                    {
                        TextRenderer.DrawText(g, e.Node.Text, this.Font, e.Bounds, this.ForeColor,
                                              TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
                    }
                }
            }
        }