System.Windows.Forms.TreeView_Old.OnPaint C# (CSharp) Method

OnPaint() protected method

protected OnPaint ( PaintEventArgs e ) : void
e PaintEventArgs
return void
        protected override void OnPaint(PaintEventArgs e)
        {
            if (Width < 16) return;

            base.OnPaint(e);

            Graphics g = e.Graphics;
            g.FillRectangle(new SolidBrush(BackColor), 0, 0, Width, Height);
            
            for (int i = 0; i < _renderList.Count; i++)
            {
                if (_renderList[i].Index == _selectedIndex)
                    g.FillRectangle(new SolidBrush(Color.FromArgb(64, 0, 122, 204)), 0, i * NodeHeight, Width - _scrollWidth, NodeHeight);
                if (_renderList[i].Hovered)
                    g.FillRectangle(new SolidBrush(Color.FromArgb(64, 0, 122, 204)), 0, i * NodeHeight, Width - _scrollWidth, NodeHeight);
                Color _nodeColor = _renderList[i].Node.TextColor;
                if ((_nodeColor.R > 192 && _nodeColor.G > 192 && _nodeColor.B > 192) || _nodeColor.A < 192)
                    _nodeColor = Color.FromArgb(64, 64, 64);
                int nodeOffset = 8 * _renderList[i].Depth;
                g.DrawString(_renderList[i].Node.Text, Font, new SolidBrush(_nodeColor), new RectangleF(nodeOffset + 6, i * NodeHeight - 2, Width - _scrollWidth - nodeOffset, NodeHeight + 4), NodeAlign);
                if (_renderList[i].Node.Nodes.Count > 0)
                {
                    var nodeTexture = _renderList[i].Node.Collapsed ? ImageFolderClosed : ImageFolderOpened;
                    g.DrawTexture(nodeTexture, nodeOffset - 12, i * NodeHeight, 16, 16);
                }
                else
                {
                    var image = ImageFile;
                    if (_renderList[i].Node.Image != null)
                        image = _renderList[i].Node.Image;
                    g.DrawTexture(image, nodeOffset - 12, i * NodeHeight, image.width, image.height);
                }
            }
            //g.GroupEnd();

            // Scroll.
            if (_renderList.Count < _scrollItems)
            {
                Color _scrollColor = Color.FromArgb(222, 222, 230);
                if (_scrollHover || _scroll) _scrollColor = Color.FromArgb(136, 136, 136);
                g.FillRectangle(new SolidBrush(_scrollColor), Width - _scrollWidth + 2, _scrollY, _scrollWidth - 2, _scrollHeight);
            }

            g.DrawRectangle(new Pen(BorderColor), 0, 0, Width, Height);
        }