예제 #1
0
        public void levelDraw(int val)
        {
            int    sensePerc   = 0;
            int    lineStartX  = 0;
            int    lineStartY  = 0;
            int    lineLen     = 0;
            int    lineWid     = 0;
            double onePct      = 0;
            int    greenLen    = 0;
            int    orangeLen   = 0;
            int    greenStart  = 0;
            int    orangeStart = 0;


            if (CameraRig.camerasAreConnected())
            {
                sensePerc = (int)Math.Floor(CameraRig.ConnectedCameras[CameraRig.CurrentlyDisplayingCamera].cam.movementVal * (double)100);
            }
            else
            {
                sensePerc = 100;
            }

            lineLen     = levelbox.Size.Height;
            lineWid     = levelbox.Size.Width;
            onePct      = (double)lineLen / (double)100;
            greenLen    = (int)Math.Floor((double)val * onePct);
            orangeLen   = (int)Math.Floor(((double)100 - (double)val) * onePct);
            greenStart  = (int)Math.Floor(((double)100 - (double)val) * onePct);
            orangeStart = (100 - val);

            System.Drawing.SolidBrush controlBrush = new System.Drawing.SolidBrush(System.Drawing.SystemColors.Control);
            System.Drawing.SolidBrush greenBrush   = new System.Drawing.SolidBrush(System.Drawing.Color.GreenYellow);
            System.Drawing.SolidBrush orangeBrush  = new System.Drawing.SolidBrush(System.Drawing.Color.Red);

            if (levelBitmap != null)
            {
                lock (levelBitmap)
                {
                    levelBitmap = new Bitmap(lineWid, lineLen, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
                    Graphics levelObj = Graphics.FromImage(levelBitmap);



                    levelObj.FillRectangle(controlBrush, new Rectangle(lineStartX, lineStartY, lineWid, lineLen));

                    if (val > sensePerc)
                    {
                        greenStart  = (int)Math.Floor(((double)100 - (double)sensePerc) * onePct);
                        greenLen    = (int)Math.Floor((double)sensePerc * onePct);
                        orangeStart = ((int)Math.Floor(((double)100 - (double)val) * onePct));
                        orangeLen   = (int)Math.Floor(((double)val - (double)sensePerc) * onePct);
                        levelObj.FillRectangle(greenBrush, new Rectangle(lineStartX, greenStart, lineWid, greenLen));
                        levelObj.FillRectangle(orangeBrush, new Rectangle(lineStartX, orangeStart, lineWid, orangeLen));
                    }
                    else
                    {
                        greenStart = (int)Math.Floor(((double)100 - (double)val) * onePct);
                        greenLen   = (int)Math.Floor((double)val * onePct);
                        levelObj.FillRectangle(greenBrush, new Rectangle(lineStartX, greenStart, lineWid, greenLen));
                    }

                    controlBrush.Dispose();
                    greenBrush.Dispose();
                    orangeBrush.Dispose();
                    levelObj.Dispose();
                    levelbox.Invalidate();
                }
            }
        }