12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using System.Drawing;
- using System.Windows.Forms;
- namespace Optimizer
- {
- public sealed class MoonTree : TreeView
- {
- string[] rootNodes =
- {
- "cpu", "ram", "mobo", "gpu", "disk", "inet", "audio", "dev"
- };
- string _primaryItemTag = "_primary";
- public MoonTree()
- {
- this.DrawMode = TreeViewDrawMode.OwnerDrawAll;
- this.BackColor = Color.FromArgb(20, 20, 20);
- this.ForeColor = Color.White;
- this.BorderStyle = BorderStyle.None;
- }
- private bool FindName(string name)
- {
- foreach (string x in rootNodes)
- {
- if (x == name) return true;
- }
- return false;
- }
- protected override void OnDrawNode(DrawTreeNodeEventArgs e)
- {
- Rectangle r = new Rectangle();
- r.X = 0;
- r.Y = e.Bounds.Y;
- r.Height = e.Bounds.Height;
- r.Width = 100000;
- if (e.Node.IsSelected)
- {
- e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(50, 50, 50)), r); //e.Bounds
- }
- else
- {
- e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(20, 20, 20)), r); //e.Bounds
- }
- if (FindName(e.Node.Name)) TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, Color.Silver);
- else if (e.Node.Tag != null && e.Node.Tag.ToString() == _primaryItemTag) TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, OptionsHelper.ForegroundColor);
- else TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, Color.White);
- if (this.ImageList != null && this.ImageList.Images.Count > 0 && e.Node.SelectedImageIndex > -1)
- {
- e.Graphics.DrawImage(this.ImageList.Images[e.Node.SelectedImageIndex], e.Bounds.Left + 15 * e.Node.Level + 5, e.Bounds.Top);
- }
- }
- }
- }
|