コード例 #1
0
        public void drawSingleBox(int index, Resourse demand, Resourse historyHave, Resourse Max, Resourse available, int flag)//按照运行给出的数据动态展示算法运行到的当前进程的变化情况
        {
            //                float angleA = Allocation.A * 360 / (Max.A == 0 ? 1 : Max.A);
            //listBox1.Items.Add("myDrawPie被调用");
            Console.WriteLine(pictureBoxes[index].AccessibilityObject);

            Graphics  g          = this.pictureBoxes[index].CreateGraphics();
            Rectangle rectangle1 = new Rectangle(10, 10, 100, 100);
            Rectangle rectangle2 = new Rectangle(150, 10, 100, 100);
            Rectangle rectangle3 = new Rectangle(290, 10, 100, 100);
            float     angleA     = historyHave.A * 360 / (Max.A == 0 ? 1 : Max.A);
            float     angleB     = historyHave.B * 360 / (Max.B == 0 ? 1 : Max.B);
            float     angleC     = historyHave.C * 360 / (Max.C == 0 ? 1 : Max.C);
            Resourse  after_add  = new Resourse(historyHave.A + demand.A > Max.A ? Max.A : historyHave.A + demand.A, historyHave.B + demand.B > Max.B ? Max.B : historyHave.B + demand.B, historyHave.C + demand.C > Max.C ? Max.C : historyHave.C + demand.C);

            g.FillRectangle(new SolidBrush(Color.White), rectangle1.X, 115, 100, 20);
            g.DrawString(after_add.A.ToString() + "/" + Max.A.ToString(), new Font("等线", 14), new SolidBrush(Color.Black), rectangle1.X + 30, 115);
            g.FillRectangle(new SolidBrush(Color.White), rectangle2.X, 115, 100, 20);
            g.DrawString(after_add.B.ToString() + "/" + Max.B.ToString(), new Font("等线", 14), new SolidBrush(Color.Black), rectangle2.X + 30, 115);
            g.FillRectangle(new SolidBrush(Color.White), rectangle3.X, 115, 100, 20);
            g.DrawString(after_add.C.ToString() + "/" + Max.C.ToString(), new Font("等线", 14), new SolidBrush(Color.Black), rectangle3.X + 30, 115);
            MyDrawParam param1 = new MyDrawParam(g);

            param1.positionRectangle = new Rectangle(10, 10, 100, 100);
            param1.angleBegin        = angleA - 90;
            param1.angleIncrease     = demand.A * 360 / (Max.A == 0 ? 1 : Max.A);
            param1.interval          = DataBus.FormOperatingActiveInterval;
            MyDrawParam param2 = new MyDrawParam(g);

            param2.positionRectangle = new Rectangle(150, 10, 100, 100);
            param2.angleBegin        = angleB - 90;
            param2.angleIncrease     = demand.B * 360 / (Max.B == 0 ? 1 : Max.B);
            param2.interval          = DataBus.FormOperatingActiveInterval;
            MyDrawParam param3 = new MyDrawParam(g);

            param3.positionRectangle = new Rectangle(290, 10, 100, 100);
            param3.angleBegin        = angleC - 90;
            param3.angleIncrease     = demand.C * 360 / (Max.C == 0 ? 1 : Max.C);
            param3.interval          = DataBus.FormOperatingActiveInterval;
            if (flag == 1)
            {
                MyAnimation.SyncPreDrawPie(param1);
                MyAnimation.SyncPreDrawPie(param2);
                MyAnimation.SyncPreDrawPie(param3);
            }
            else
            {
                MyAnimation.SyncActiveDrawPie(param1);
                MyAnimation.SyncActiveDrawPie(param2);
                MyAnimation.SyncActiveDrawPie(param3);
            }
        }
コード例 #2
0
         private void update_draw(object sender, EventArgs e)//动态的绘制更新
        {
            myOperator.printPro(myOperator.ProcessList, myOperator.available);
            Rectangle rectangle1 = new Rectangle(10, 10, 100, 100);
            Rectangle rectangle2 = new Rectangle(150, 10, 100, 100);
            Rectangle rectangle3 = new Rectangle(290, 10, 100, 100);
            for (int i = 0; i < 5; i++)
            {
                AngleCollection history = historys[i];
                Resourse Max=myOperator.ProcessList[i].Max;
                Resourse Allocation = myOperator.ProcessList[i].Allocation;
                float angleA = Allocation.A * 360 / (Max.A == 0 ? 1 : Max.A);
                float angleB = Allocation.B * 360 / (Max.B == 0 ? 1 : Max.B);
                float angleC = Allocation.C * 360 / (Max.C == 0 ? 1 : Max.C);
                Graphics g=pictureBoxes[i].CreateGraphics();
                MyDrawParam param1 = new MyDrawParam(g);
                param1.positionRectangle = rectangle1;
                param1.angleBegin = -90 + history.A;
                param1.angleIncrease = angleA - history.A;
                param1.interval = DataBus.FormMainActiveInterval;
                MyAnimation.AsyncActiveDrawPie(param1);
                g.FillRectangle(new SolidBrush(Color.White), rectangle1.X, 115, 100, 20);
                g.DrawString(Allocation.A.ToString() + "/" + Max.A.ToString(), new Font("等线", 14), new SolidBrush(Color.Black), rectangle1.X + 30, 115);
                MyDrawParam param2 = new MyDrawParam(g);
                param2.positionRectangle = rectangle2;
                param2.angleBegin = -90 + history.B;
                param2.angleIncrease = angleB - history.B;
                param2.interval = DataBus.FormMainActiveInterval;
                MyAnimation.AsyncActiveDrawPie(param2);
                g.FillRectangle(new SolidBrush(Color.White), rectangle2.X, 115, 100, 20);
                g.DrawString(Allocation.B.ToString() + "/" + Max.B.ToString(), new Font("等线", 14), new SolidBrush(Color.Black), rectangle2.X + 30, 115);
                MyDrawParam param3 = new MyDrawParam(g);
                param3.positionRectangle = rectangle2;
                param3.angleBegin = -90 + history.B;
                param3.angleIncrease = angleB - history.B;
                param3.interval = DataBus.FormMainActiveInterval;
                MyAnimation.AsyncActiveDrawPie(param3);
                //activeDrawPie(g, change_brush, warn_brush, rectangle3, -90+history.C, angleC - history.C,100);
                g.FillRectangle(new SolidBrush(Color.White), rectangle3.X, 115, 100, 20);
                g.DrawString(Allocation.C.ToString() + "/" + Max.C.ToString(), new Font("等线", 14), new SolidBrush(Color.Black), rectangle3.X + 30, 115);
                history.A = angleA;
                history.B = angleB;
                history.C = angleC;


            }
        }