コード例 #1
0
 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;
                 }
             }
         }
     }
 }
コード例 #2
0
 protected override void OnMouseLeave(EventArgs e)
 {
     base.OnMouseLeave(e);
     if (mouseEnterItem != null)
     {
         PerformanceListItem o = mouseEnterItem;
         mouseEnterItem = null;
         InvalidAItem(o);
     }
 }
コード例 #3
0
ファイル: PerformanceList.cs プロジェクト: user20170106/PCMgr
 private void Items_ItemRemoved(PerformanceListItem obj)
 {
     if (obj == selectedItem)
     {
         if (items.Count > 0)
         {
             Selectedtem = items[0];
             OnSelectedtndexChanged(EventArgs.Empty);
         }
     }
 }
コード例 #4
0
ファイル: PerformanceList.cs プロジェクト: user20170106/PCMgr
        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]);
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
 public PerformanceListItem this[string key]
 {
     get
     {
         PerformanceListItem result = null;
         foreach (PerformanceListItem ix in List)
         {
             if (ix.Name == key)
             {
                 return(ix);
             }
         }
         return(result);
     }
 }
コード例 #7
0
 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);
         }
     }
 }
コード例 #8
0
        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);
        }
コード例 #9
0
        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;
                }
            }
        }
コード例 #10
0
 public bool Contains(PerformanceListItem control)
 {
     return(List.Contains(control));
 }
コード例 #11
0
 public void Insert(int index, PerformanceListItem control)
 {
     List.Insert(index, control);
 }
コード例 #12
0
 public void Remove(PerformanceListItem control)
 {
     List.Remove(control);
     ItemRemoved?.Invoke(control);
 }
コード例 #13
0
 public void Add(PerformanceListItem newcontrol)
 {
     List.Add(newcontrol);
     ItemAdd?.Invoke(newcontrol);
 }
コード例 #14
0
 public int IndexOf(PerformanceListItem newcontrol)
 {
     return(List.IndexOf(newcontrol));
 }
コード例 #15
0
 private void Items_ItemAdd(PerformanceListItem obj)
 {
 }
コード例 #16
0
 private void Items_ItemRemoved(PerformanceListItem obj)
 {
 }
コード例 #17
0
ファイル: PerformanceList.cs プロジェクト: user20170106/PCMgr
        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);
                }
            }
        }
コード例 #18
0
        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));
        }
コード例 #19
0
 private void InvalidAItem(PerformanceListItem it)
 {
     Invalidate(new Rectangle(0, it.ItemY - yOffest, Width, it.ItemHeight));
 }