protected override void OnMouseMove(MouseEventArgs e) { if (!m) { m = true; t.Start(); { for (int i = 0; i < items.Count; i++) { if (!items[i].Gray) { int y = items[i].ItemY - yOffest; if (e.Y > y && e.Y < y + items[i].ItemHeight) { if (mouseEnterItem != null) { InvalidAItem(mouseEnterItem); } mouseEnterItem = items[i]; InvalidAItem(mouseEnterItem); break; } else if (y + items[i].ItemHeight > e.Y) { break; } } else { mouseEnterItem = null; } } } } }
protected override void OnMouseLeave(EventArgs e) { base.OnMouseLeave(e); if (mouseEnterItem != null) { PerformanceListItem o = mouseEnterItem; mouseEnterItem = null; InvalidAItem(o); } }
private void Items_ItemRemoved(PerformanceListItem obj) { if (obj == selectedItem) { if (items.Count > 0) { Selectedtem = items[0]; OnSelectedtndexChanged(EventArgs.Empty); } } }
private void DrawItemDataGridData(Graphics g, PerformanceListItem it, List <PointF> ps, Pen p, Rectangle rect, float single, float division, float offset, int i, bool is2 = false) { float ypos = rect.Top + rect.Height - (((float)(is2 ? it.Data2[i] : it.Data[i]) / (float)it.MaxValue) * 100) * division; if (ypos > rect.Bottom) { ypos = rect.Bottom; } ps.Add(new PointF(rect.Left + offset + i * single, ypos)); g.DrawLine(p, ps[ps.Count - 2], ps[ps.Count - 1]); }
private void DrawItemDataGrid(Graphics g, PerformanceListItem it, int y) { Rectangle rect = new Rectangle(10, y + 10, 60, 40); g.FillRectangle(Brushes.White, rect); if (it.Gray) { g.DrawRectangle(Pens.Gray, rect); } else { g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; float single = 1.0F * rect.Width / (max_small_data_count - 1); float division = 1.0F * rect.Height / 100; float offset = 1.0F * (max_small_data_count - it.Data.Count) * single; List <PointF> ps = new List <PointF>(); ps.Add(new PointF(rect.Left, rect.Top + rect.Height)); ps.Add(new PointF(rect.Left + offset + 0 * single, rect.Top + rect.Height - it.Data[0] * division)); if (it.BgBrush != Brushes.White) { for (int i = 1; i < it.Data.Count; i++) { float ypos = rect.Top + rect.Height - it.Data[i] * division; if (ypos < rect.Top) { ypos = rect.Top; } ps.Add(new PointF(rect.Left + offset + i * single, ypos)); g.DrawLine(it.BasePen, ps[ps.Count - 2], ps[ps.Count - 1]); } ps.Add(new PointF(rect.Left + rect.Width, rect.Top + rect.Height)); g.FillClosedCurve(it.BgBrush, ps.ToArray(), System.Drawing.Drawing2D.FillMode.Alternate, 0f); } else { for (int i = 1; i < it.Data.Count; i++) { g.DrawLine(it.BasePen, ps[ps.Count - 2], ps[ps.Count - 1]); } } ps.Clear(); g.DrawRectangle(it.BorderPen, rect); } }
public PerformanceListItem this[string key] { get { PerformanceListItem result = null; foreach (PerformanceListItem ix in List) { if (ix.Name == key) { return(ix); } } return(result); } }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (e.Button == MouseButtons.Left) { if (mouseEnterItem != null) { if (selectedItem != null) { InvalidAItem(selectedItem); } selectedItem = mouseEnterItem; InvalidAItem(selectedItem); SelectedtndexChanged?.Invoke(this, null); } } }
private void DrawItem(Graphics g, PerformanceListItem it, int y) { if (it == mouseEnterItem) { TaskMgrListApis.MListDrawItem(hThemeListView, g.GetHdc(), 2, mouseEnterItem.ItemY + 1 - yOffest, Width - 6, mouseEnterItem.ItemHeight - 2, TaskMgrListApis.M_DRAW_LISTVIEW_HOT); g.ReleaseHdc(); } else if (it == selectedItem) { TaskMgrListApis.MListDrawItem(hThemeListView, g.GetHdc(), 2, selectedItem.ItemY + 1 - yOffest, Width - 6, selectedItem.ItemHeight - 2, TaskMgrListApis.M_DRAW_LISTVIEW_SELECT); g.ReleaseHdc(); } g.DrawString(it.Name, hugeTextFont, Brushes.Black, 80, y + 10); g.DrawString(it.SmallText, smallTextFont, Brushes.Black, 80, y + 30); DrawItemDataGrid(g, it, y); }
protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; Rectangle refrect = e.ClipRectangle; int drawedHeight = -yOffest; for (int i = 0; i < items.Count; i++) { PerformanceListItem it = items[i]; if (drawedHeight >= refrect.Top - it.ItemHeight) { DrawItem(g, it, it.ItemY - yOffest); } drawedHeight += it.ItemHeight; if (drawedHeight > refrect.Bottom) { break; } } }
public bool Contains(PerformanceListItem control) { return(List.Contains(control)); }
public void Insert(int index, PerformanceListItem control) { List.Insert(index, control); }
public void Remove(PerformanceListItem control) { List.Remove(control); ItemRemoved?.Invoke(control); }
public void Add(PerformanceListItem newcontrol) { List.Add(newcontrol); ItemAdd?.Invoke(newcontrol); }
public int IndexOf(PerformanceListItem newcontrol) { return(List.IndexOf(newcontrol)); }
private void Items_ItemAdd(PerformanceListItem obj) { }
private void Items_ItemRemoved(PerformanceListItem obj) { }
private void DrawItemDataGrid(Graphics g, PerformanceListItem it, int y) { if (it.Gray && drawDataGrid) { g.DrawRectangle(Pens.Gray, new Rectangle(10, y + 10, 60, 40)); } else if (drawDataGrid) { Rectangle rect = new Rectangle(0, 0, 60, 40); Graphics gx = Graphics.FromImage(it.DataGridCache); gx.FillRectangle(Brushes.White, rect); gx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; float single = 1.0F * rect.Width / (max_small_data_count - 1); float division = 1.0F * rect.Height / 100; float offset = 1.0F * (max_small_data_count - it.Data.Count) * single; List <PointF> ps = new List <PointF>(); ps.Add(new PointF(rect.Left, rect.Top + rect.Height)); if (it.BgBrush != Brushes.White) { it.DataAvg1 = 0; for (int i = 0; i < it.Data.Count; i++) { it.DataAvg1 += it.Data[i]; DrawItemDataGridData(gx, it, ps, it.BasePen, rect, single, division, offset, i, false); } it.DataAvg1 /= it.Data.Count; ps.Add(new PointF(rect.Left + rect.Width, rect.Top + rect.Height)); gx.FillClosedCurve(it.BgBrush, ps.ToArray(), System.Drawing.Drawing2D.FillMode.Alternate, 0f); if (it.EnableData2) { ps.RemoveRange(2, ps.Count - 2); it.DataAvg2 = 0; for (int i = 0; i < it.Data2.Count; i++) { it.DataAvg2 += it.Data2[i]; DrawItemDataGridData(gx, it, ps, it.BasePen2, rect, single, division, offset, i, true); } it.DataAvg2 /= it.Data2.Count; it.DataAvg = (it.DataAvg1 + it.DataAvg2) / 2; if (it.BgBrush2 != Brushes.White) { ps.Add(new PointF(rect.Left + rect.Width, rect.Top + rect.Height)); gx.FillClosedCurve(it.BgBrush2, ps.ToArray(), System.Drawing.Drawing2D.FillMode.Alternate, 0f); } } else { it.DataAvg = it.DataAvg1; } } else { it.DataAvg1 = 0; for (int i = 0; i < it.Data.Count; i++) { it.DataAvg1 += it.Data[i]; DrawItemDataGridData(gx, it, ps, it.BasePen, rect, single, division, offset, i, false); } it.DataAvg1 /= it.Data.Count; if (it.EnableData2) { ps.RemoveRange(2, ps.Count - 2); it.DataAvg2 = 0; for (int i = 0; i < it.Data2.Count; i++) { it.DataAvg2 += it.Data2[i]; DrawItemDataGridData(gx, it, ps, it.BasePen2, rect, single, division, offset, i, true); } it.DataAvg2 /= it.Data2.Count; it.DataAvg = (it.DataAvg1 + it.DataAvg2) / 2; } else { it.DataAvg = it.DataAvg1; } } if (it.EnableAutoMax && it.AutoMaxCallback != null) { it.MaxValue = (int)it.AutoMaxCallback(it.DataAvg); } ps.Clear(); gx.DrawRectangle(it.BorderPen, 0, 0, rect.Width - 1, rect.Height - 1); gx.Dispose(); g.DrawImage(it.DataGridCache, 10, y + 10); } else { if (it.Gray) { g.DrawImage(noGridGrayImage, 10, y + 15, 16, 16); } else { g.DrawImage(it.NoGridImage, 10, y + 15, 16, 16); } } }
protected override bool ProcessDialogKey(Keys keyData) { if (keyData == Keys.Up) { if (selectedItem != null) { PerformanceListItem last_selectedItem = selectedItem; int index = items.IndexOf(last_selectedItem); CON: if (index >= 1) { if (!items[index - 1].Gray) { selectedItem = items[index - 1]; } else { index--; goto CON; } InvalidAItem(selectedItem); InvalidAItem(last_selectedItem); OnSelectedtndexChanged(EventArgs.Empty); return(false); } } } else if (keyData == Keys.Down) { if (selectedItem == null) { if (items.Count > 0) { Selectedtem = items[0]; OnSelectedtndexChanged(EventArgs.Empty); } return(false); } else { PerformanceListItem last_selectedItem = selectedItem; int index = items.IndexOf(last_selectedItem); CON: if (index < items.Count - 1) { if (!items[index + 1].Gray) { selectedItem = items[index + 1]; } else { index++; goto CON; } InvalidAItem(selectedItem); InvalidAItem(last_selectedItem); OnSelectedtndexChanged(EventArgs.Empty); return(false); } } } return(base.ProcessDialogKey(keyData)); }
private void InvalidAItem(PerformanceListItem it) { Invalidate(new Rectangle(0, it.ItemY - yOffest, Width, it.ItemHeight)); }