Example #1
0
        protected override void OnDrawNode(DrawTreeNodeEventArgs e)
        {
            if (e.Bounds.Height <= 0)
            {
                return;
            }
            TreeMenuNode node = (TreeMenuNode)e.Node;

            //DrawMenuNode(node);
            DrawMenuNode(e.Graphics, e.Bounds, (TreeMenuNode)e.Node, GetMenuState(e.State));
        }
Example #2
0
        private void AddMenu(TreeMenuNode parent, IList<JToken> menus)
        {
            try
            {
                if (parent == null)
                {
                    string menuStr = File.ReadAllText(Path.Combine(Application.StartupPath, @"../../mainMenu/mainMenu.txt"));
                    JObject menuObj = JObject.Parse(menuStr);
                    menus = menuObj["menus"].Children().ToList();
                }
                foreach (JToken ret in menus)
                {
                    if (ret["children"] != null)
                    {
                        IList<JToken> subMenus = ret["children"].Children().ToList();
                        MainMenuTag menuTag = JsonConvert.DeserializeObject<MainMenuTag>(ret.ToString());
                        menuTag.Type = MenuType.Folder;
                        TreeMenuNode newNode = new TreeMenuNode(menuTag.Name, MenuType.Folder);
                        newNode.Tag = menuTag;
                        if(parent == null) 
                        {
                            mainMenu.Nodes.Add(newNode);
                        }
                        else
                        {
                            parent.Nodes.Add(newNode);
                        }
                        AddMenu(newNode, subMenus);
                    }
                    else
                    {
                        MainMenuTag menuTag = JsonConvert.DeserializeObject<MainMenuTag>(ret.ToString());
                        menuTag.Type = MenuType.Leaf;
                        TreeMenuNode newNode = new TreeMenuNode(menuTag.Name, MenuType.Leaf);
                        newNode.Tag = menuTag;
                        if (parent == null)
                        {
                            mainMenu.Nodes.Add(newNode);
                        }
                        else
                        {
                            parent.Nodes.Add(newNode);
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            

        }
Example #3
0
        private void DrawFolder(Graphics g, Rectangle rect, TreeMenuNode node, MenuState state)
        {
            Color colorFrom = GetGrandientColor(state, true, true);
            Color colorTo   = GetGrandientColor(state, true, false);

            Brush br = new LinearGradientBrush(rect, colorFrom, colorTo, LinearGradientMode.Vertical);

            g.FillRectangle(br, rect.X, rect.Y, rect.Width, rect.Height);
            br.Dispose();

            if (node.Text.Length > 0)
            {
                g.DrawString(node.Text, node.TreeView.Font, Brushes.Black, 10 + node.Level * 15, 10 + rect.Y);
            }
        }
Example #4
0
        //protected override void OnNodeMouseHover(TreeNodeMouseHoverEventArgs e)
        //{
        //    base.OnNodeMouseHover(e);
        //    TreeMenuNode node = (TreeMenuNode)e.Node;

        //}
        #endregion

        private void DrawMenuNode(Graphics g, Rectangle rect, TreeMenuNode node, MenuState state)
        {
            if (node.Type == MenuType.Invalid)
            {
                return;
            }
            if (node.Type == MenuType.Folder)
            {
                DrawFolder(g, rect, node, state);
            }
            else if (node.Type == MenuType.Leaf)
            {
                DrawLeaf(g, rect, node, state);
            }
        }
Example #5
0
        private void DrawLeaf(Graphics g, Rectangle rect, TreeMenuNode node, MenuState state)
        {
            Color colorFrom = GetGrandientColor(state, false, true);
            Color colorTo = GetGrandientColor(state, false, false);

            Brush br = new LinearGradientBrush(rect,
                colorFrom,
                colorTo,
                90f);
            g.FillRectangle(br, rect.X, rect.Y, rect.Width, rect.Height);
            br.Dispose();

            if (node.Text.Length > 0)
            {
                g.DrawString(node.Text, node.TreeView.Font, Brushes.Black, 10 + node.Level * 15, 10 + rect.Y);
            }
        }
Example #6
0
        //protected override void OnNodeMouseHover(TreeNodeMouseHoverEventArgs e)
        //{
        //    base.OnNodeMouseHover(e);
        //    TreeMenuNode node = (TreeMenuNode)e.Node;
            
        //}
        #endregion

        private void DrawMenuNode(Graphics g, Rectangle rect, TreeMenuNode node, MenuState state)
        {
            if (node.Type == MenuType.Invalid) return;
            if (node.Type == MenuType.Folder)
            {
                DrawFolder(g, rect, node, state);
            }
            else if (node.Type == MenuType.Leaf)
            {
                DrawLeaf(g, rect, node, state);
            }
        }