private void DrawBarRectangle(int barIndex, int barsCount, Graphics g) { Rectangle rClnt = this.ClientRectangle; Rectangle rBar = new Rectangle(); int barPercent = (int)Math.Ceiling(100.0 * (barIndex) / (double)barsCount); if (_orientation == Orientation.Vertical) { rBar.X = rClnt.X + _margin; rBar.Y = rClnt.Y + _margin + barIndex * _barSize; rBar.Width = rClnt.Width - 2 * _margin; rBar.Height = _barSize - _margin; //if out of bounds if (rBar.Y + rBar.Height + _margin > this.Height) { rBar.Height = rClnt.Height - rBar.Y - _margin; } barPercent = (int)Math.Ceiling(100.0 * (barsCount - barIndex - 1) / (double)barsCount); } else { rBar.X = rClnt.X + _margin + barIndex * _barSize; rBar.Y = rClnt.Y + _margin; rBar.Width = _barSize - _margin; rBar.Height = rClnt.Height - 2 * _margin; //if out of bounds if (rBar.X + rBar.Width + _margin > this.Width) { rBar.Width = rClnt.Width - rBar.X - _margin; } } bool isBarActive = IsBarActive(barPercent); Brush brush = ColorTheme.GetColor(barPercent, isBarActive); if (Enabled) { g.FillRectangle(brush, rBar); } else { g.DrawRectangle(Pens.Silver, rBar); } }