private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e) { System.Drawing.Graphics g = e.Graphics; g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; int wi = 0; if (m_Items.Count > 0) { SizeF [] size_entries = new SizeF[m_Items.Count]; int i; for (i = 0; i < m_Items.Count; i++) { string s = ((PercentChartItem)(m_Items[i])).Text; size_entries[i] = g.MeasureString(s, PFont); if (size_entries[i].Width > wi) { wi = (int)(size_entries[i].Width); } } int ps = this.Width - RoundCornerUpLeft.Width - SUpReleased.Width; for (i = 0; i < m_Items.Count; i++) { PercentChartItem pi = (PercentChartItem)m_Items[i]; g.DrawString(pi.Text, PFont, PTextBrush, 2 + wi - size_entries[i].Width, 16 * i - PageStart); if (pi.Percent > 0.0) { int bs; int ci = i % 8; int pblen = (int)(pi.Percent * (ps - wi - 8 - BarImages[ci, 0].Width - BarImages[ci, 2].Width)); int pend = pblen + wi + 4 + BarImages[ci, 0].Width; for (bs = wi + 4 + BarImages[ci, 0].Width; (bs + BarImages[ci, 1].Width) < pend; bs += (int)BarImages[ci, 1].Width) { g.DrawImageUnscaled(BarImages[ci, 1], bs, i * 16 - PageStart); } g.DrawImage(BarImages[ci, 1], bs, i * 16 - PageStart, pend - bs, BarImages[ci, 1].Height); g.DrawImageUnscaled(BarImages[ci, 0], wi + 4, i * 16 - PageStart); g.DrawImageUnscaled(BarImages[ci, 2], pblen + wi + 4 + BarImages[ci, 0].Width, i * 16 - PageStart); } } } g.DrawImageUnscaled(RoundCornerUpLeft, 0, 0); g.DrawImageUnscaled(RoundCornerDownLeft, 0, this.Height - RoundCornerDownLeft.Height); }
public void Insert(int index, PercentChartItem pi) { m_Entries.Insert(index, pi); m_Owner.ViewRefresh(); }
public void Add(PercentChartItem pi) { m_Entries.Add(pi); m_Owner.ViewRefresh(); }