Exemple #1
0
        /// <summary>
        ///  Draws the LimitLines associated with this axis to the screen.
        /// </summary>
        /// <param name="c"></param>
        public virtual void RenderLimitLines(SKCanvas c)
        {
            var limitLines = XAxis.LimitLines;

            if (limitLines == null || limitLines.Count <= 0)
            {
                return;
            }

            for (int i = 0; i < limitLines.Count; i++)
            {
                LimitLine l = limitLines[i];

                if (!l.IsEnabled)
                {
                    continue;
                }

                int clipRestoreCount = c.Save();
                c.ClipRect(ViewPortHandler.ContentRect.InsetHorizontally(l.LineWidth));

                var position = Trasformer.PointValueToPixel(l.Limit, 0.0f);

                RenderLimitLineLine(c, l, position);
                RenderLimitLineLabel(c, l, position, 2.0f + l.YOffset);

                c.RestoreToCount(clipRestoreCount);
            }
        }
Exemple #2
0
    // Update is called once per frame
    void Update()
    {
        //GameObject objectPlayer = GameObject.FindGameObjectWithTag("Player");
        //Player player = objectPlayer.GetComponent<Player>();

        GameObject objectLimit = GameObject.FindGameObjectWithTag("ZoneLimit");
        LimitLine  zoneLimit   = objectLimit.GetComponent <LimitLine>();

        GameObject objectZone = GameObject.FindGameObjectWithTag("Zone");
        ZoneLine   zone       = objectZone.GetComponent <ZoneLine>();

        if (zone != null && update >= 400)
        {
            //player.updateRadius(4f);
            zoneLimit.setZone(Config.SIZE_ZONE * 1.4f);
            zone.setZone(Config.SIZE_ZONE * 1f);
        }

        if (zone != null && update >= 800)
        {
            //player.updateRadius(2f);
            zoneLimit.setZone(Config.SIZE_ZONE * 1f);
            zone.setZone(Config.SIZE_ZONE * 0.5f);
            update = 0;
        }
        update++;
    }
Exemple #3
0
        public static XYTestLimit ExcelToTable(string file)
        {
            if (!File.Exists(file))
            {
                return(null);
            }
            XYTestLimit dt = new XYTestLimit();
            IWorkbook   workbook;
            string      fileExt = Path.GetExtension(file).ToLower();

            using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
            {
                //XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式
                if (fileExt == ".xlsx")
                {
                    workbook = new XSSFWorkbook(fs);
                }
                else if (fileExt == ".xls")
                {
                    workbook = new HSSFWorkbook(fs);
                }
                else
                {
                    workbook = null;
                }
                if (workbook == null)
                {
                    return(null);
                }

                ISheet sheetLimitLine = workbook.GetSheet("LimitLine");

                for (int i = 1; i <= sheetLimitLine.LastRowNum - sheetLimitLine.FirstRowNum; i++)
                {
                    LimitLine LL = new LimitLine();

                    LL.Type = (LimitLineTypeEnum)Enum.Parse(typeof(LimitLineTypeEnum), GetValueType(sheetLimitLine.GetRow(i).GetCell(0)).ToString());
                    LL.X1   = Convert.ToDouble(GetValueType(sheetLimitLine.GetRow(i).GetCell(1)));
                    LL.X2   = Convert.ToDouble(GetValueType(sheetLimitLine.GetRow(i).GetCell(2)));
                    LL.Y1   = Convert.ToDouble(GetValueType(sheetLimitLine.GetRow(i).GetCell(3)));
                    LL.Y2   = Convert.ToDouble(GetValueType(sheetLimitLine.GetRow(i).GetCell(4)));

                    dt.LimitLine.Add(LL);
                }

                if (dt.LimitLine.Count >= 0)
                {
                    dt.Enable = true;
                }
                else
                {
                    dt.Enable = false;
                }
            }
            return(dt);
        }
        public override void RenderLimitLines(SKCanvas c)
        {
            var limitLines = YAxis.LimitLines;

            if (limitLines == null)
            {
                return;
            }

            float sliceangle = Chart.SliceAngle;

            // calculate the factor that is needed for transforming the value to
            // pixels
            float factor = Chart.Factor;

            var center = Chart.CenterOffsets;

            for (int i = 0; i < limitLines.Count; i++)
            {
                LimitLine l = limitLines[i];

                if (!l.IsEnabled)
                {
                    continue;
                }

                LimitLinePaint.Color       = l.LineColor;
                LimitLinePaint.PathEffect  = l.DashPathEffect;
                LimitLinePaint.StrokeWidth = l.LineWidth;

                float r = (l.Limit - Chart.YChartMin) * factor;

                var limitPath = RenderLimitLinesPathBuffer;
                limitPath.Reset();


                int entryCount = Chart.Data.GetMaxEntryCountSet().EntryCount;
                for (int j = 0; j < entryCount; j++)
                {
                    var pOut = ChartUtil.GetPosition(center, r, sliceangle * j + Chart.RotationAngle);

                    if (j == 0)
                    {
                        limitPath.MoveTo(pOut.X, pOut.Y);
                    }
                    else
                    {
                        limitPath.LineTo(pOut.X, pOut.Y);
                    }
                }
                limitPath.Close();

                c.DrawPath(limitPath, LimitLinePaint);
            }
        }
Exemple #5
0
        public void RenderLimitLineLine(SKCanvas c, LimitLine limitLine, SKPoint position)
        {
            LimitLineSegmentsBuffer[0] = new SKPoint(position.X, ViewPortHandler.ContentTop);
            LimitLineSegmentsBuffer[1] = new SKPoint(position.Y, ViewPortHandler.ContentBottom);

            LimitLinePath.Reset();
            LimitLinePath.MoveTo(LimitLineSegmentsBuffer[0]);
            LimitLinePath.LineTo(LimitLineSegmentsBuffer[1]);

            LimitLinePaint.Style       = SKPaintStyle.Stroke;
            LimitLinePaint.Color       = limitLine.LineColor;
            LimitLinePaint.StrokeWidth = limitLine.LineWidth;
            LimitLinePaint.PathEffect  = limitLine.DashPathEffect;

            c.DrawPath(LimitLinePath, LimitLinePaint);
        }
Exemple #6
0
        public void RenderLimitLineLabel(SKCanvas c, LimitLine limitLine, SKPoint position, float yOffset)
        {
            string label = limitLine.Label;

            // if drawing the limit-value label is enabled
            if (string.IsNullOrEmpty(label) == false)
            {
                LimitLinePaint.Style       = limitLine.TextStyle;
                LimitLinePaint.PathEffect  = null;
                LimitLinePaint.Color       = limitLine.TextColor;
                LimitLinePaint.StrokeWidth = 0.5f;
                LimitLinePaint.TextSize    = limitLine.TextSize;

                float xOffset = limitLine.LineWidth + limitLine.XOffset;

                LimitLine.LimitLabelPosition labelPosition = limitLine.LabelPosition;

                if (labelPosition == LimitLine.LimitLabelPosition.RightTop)
                {
                    float labelLineHeight = LimitLinePaint.MeasureHeight(label);
                    LimitLinePaint.TextAlign = SKTextAlign.Left;
                    c.DrawText(label, position.X + xOffset, ViewPortHandler.ContentTop + yOffset + labelLineHeight,
                               LimitLinePaint);
                }
                else if (labelPosition == LimitLine.LimitLabelPosition.RightBottom)
                {
                    LimitLinePaint.TextAlign = SKTextAlign.Left;
                    c.DrawText(label, position.X + xOffset, ViewPortHandler.ContentBottom - yOffset, LimitLinePaint);
                }
                else if (labelPosition == LimitLine.LimitLabelPosition.LeftTop)
                {
                    LimitLinePaint.TextAlign = SKTextAlign.Right;
                    float labelLineHeight = LimitLinePaint.MeasureHeight(label);
                    c.DrawText(label, position.X - xOffset, ViewPortHandler.ContentTop + yOffset + labelLineHeight,
                               LimitLinePaint);
                }
                else
                {
                    LimitLinePaint.TextAlign = SKTextAlign.Right;
                    c.DrawText(label, position.X - xOffset, ViewPortHandler.ContentBottom - yOffset, LimitLinePaint);
                }
            }
        }
Exemple #7
0
        /// <summary>
        /// Creates the activity and displays the line chart.
        /// </summary>
        /// <param name="savedInstanceState">Saved instance state.</param>
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.ShowVisualizationDataLayout);

            Init();
            AddPointsToEntries();

            this.mLineData       = new LineData(mDataSet);
            this.mLineChart.Data = mLineData;

            foreach (float hc in mCurVisData.AltControlTime)
            {
                LimitLine ll = new LimitLine(hc, "");
                ll.LineColor = new Color(255, 0, 0, 40);
                ll.LineWidth = 30f;
                this.mLineChart.XAxis.AddLimitLine(ll);
            }

            this.mLineChart.XAxis.SetDrawLimitLinesBehindData(true);
            this.mLineChart.Invalidate();
        }
        public override void RenderLimitLines(SKCanvas c)
        {
            var limitLines = XAxis.LimitLines;

            if (limitLines == null || limitLines.Count <= 0)
            {
                return;
            }
            SKPath limitLinePath = LimitLinePath;

            limitLinePath.Reset();

            for (int i = 0; i < limitLines.Count; i++)
            {
                LimitLine l = limitLines[i];

                if (!l.IsEnabled)
                {
                    continue;
                }

                int clipRestoreCount = c.Save();
                c.ClipRect(ViewPortHandler.ContentRect.InsetVertically(l.LineWidth));

                LimitLinePaint.Style       = SKPaintStyle.Stroke;
                LimitLinePaint.Color       = l.LineColor;
                LimitLinePaint.StrokeWidth = l.LineWidth;
                LimitLinePaint.PathEffect  = l.DashPathEffect;

                var pt = Trasformer.PointValueToPixel(0.0f, l.Limit);

                limitLinePath.MoveTo(ViewPortHandler.ContentLeft, pt.Y);
                limitLinePath.LineTo(ViewPortHandler.ContentRight, pt.Y);

                c.DrawPath(limitLinePath, LimitLinePaint);
                limitLinePath.Reset();
                // c.drawLines(pts, mLimitLinePaint);

                string label = l.Label;

                // if drawing the limit-value label is enabled
                if (string.IsNullOrEmpty(label) == false)
                {
                    LimitLinePaint.Style       = l.TextStyle;
                    LimitLinePaint.PathEffect  = null;
                    LimitLinePaint.Color       = l.TextColor;
                    LimitLinePaint.StrokeWidth = 0.5f;
                    LimitLinePaint.TextSize    = l.TextSize;

                    float labelLineHeight = LimitLinePaint.MeasureHeight(label);
                    float xOffset         = 4f.DpToPixel() + l.XOffset;
                    float yOffset         = l.LineWidth + labelLineHeight + l.YOffset;

                    LimitLine.LimitLabelPosition position = l.LabelPosition;

                    if (position == LimitLine.LimitLabelPosition.RightTop)
                    {
                        LimitLinePaint.TextAlign = SKTextAlign.Right;
                        c.DrawText(label,
                                   ViewPortHandler.ContentRight - xOffset,
                                   pt.Y - yOffset + labelLineHeight, LimitLinePaint);
                    }
                    else if (position == LimitLine.LimitLabelPosition.RightBottom)
                    {
                        LimitLinePaint.TextAlign = SKTextAlign.Right;
                        c.DrawText(label,
                                   ViewPortHandler.ContentRight - xOffset,
                                   pt.Y + yOffset, LimitLinePaint);
                    }
                    else if (position == LimitLine.LimitLabelPosition.LeftTop)
                    {
                        LimitLinePaint.TextAlign = SKTextAlign.Left;
                        c.DrawText(label,
                                   ViewPortHandler.ContentLeft + xOffset,
                                   pt.Y - yOffset + labelLineHeight, LimitLinePaint);
                    }
                    else
                    {
                        LimitLinePaint.TextAlign = SKTextAlign.Left;
                        c.DrawText(label,
                                   ViewPortHandler.OffsetLeft + xOffset,
                                   pt.Y + yOffset, LimitLinePaint);
                    }
                }

                c.RestoreToCount(clipRestoreCount);
            }
        }
Exemple #9
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            mView           = inflater.Inflate(Resource.Layout.ChartAllTablesDialog, container, false);
            mChartAllTables = mView.FindViewById <BarChart>(Resource.Id.chartAllTablesDialog);

            dicOfDataSets = new Dictionary <string, List <BarEntry> >();

            foreach (StatsTables row in listStatsTables)
            {
                if (!listTableNames.Contains(row.table_name))
                {
                    listTableNames.Add(row.table_name);
                }
            }

            int counter = 0;


            foreach (string table in listTableNames)
            {
                List <BarEntry> barEntry = new List <BarEntry>();
                foreach (StatsTables item in listStatsTables)
                {
                    if (table == item.table_name)
                    {
                        barEntry.Add(new BarEntry(counter, item.diff_last_trans));
                        counter++;
                    }
                }
                dicOfDataSets.Add(table, barEntry);
            }

            BarData data = new BarData();

            int[] chartColors  = { Color.ParseColor("#005571"), Color.ParseColor("#227691"), Color.ParseColor("#86B1C6"), Color.ParseColor("#BCD4E0"), Color.ParseColor("#FDB813"), Color.ParseColor("#FFC54E"), Color.ParseColor("#FFD27C"), Color.ParseColor("#FFE6B9") };
            int   colorCounter = 0;

            foreach (KeyValuePair <string, List <BarEntry> > dicDataSet in dicOfDataSets)
            {
                dataSet = new BarDataSet(dicDataSet.Value, dicDataSet.Key);
                dataSet.SetColors(chartColors[colorCounter]);
                data.AddDataSet(dataSet);
                colorCounter++;
            }

            LimitLine limitLine = new LimitLine(70f);

            limitLine.LineColor = Color.DarkRed;
            limitLine.Enabled   = true;

            XAxis xAxis = mChartAllTables.XAxis;

            xAxis.SetCenterAxisLabels(false);
            xAxis.SetDrawLabels(false);
            xAxis.Position = XAxis.XAxisPosition.BottomInside;
            xAxis.SetDrawGridLines(false);

            YAxis yAxis = mChartAllTables.AxisLeft;

            yAxis.SetDrawGridLines(true);
            yAxis.AddLimitLine(limitLine);

            Legend l = mChartAllTables.Legend;

            l.VerticalAlignment   = Legend.LegendVerticalAlignment.Top;
            l.HorizontalAlignment = Legend.LegendHorizontalAlignment.Right;
            l.Orientation         = Legend.LegendOrientation.Vertical;
            l.WordWrapEnabled     = true;
            l.SetDrawInside(true);

            mChartAllTables.Data = data;
            mChartAllTables.AxisRight.SetDrawLabels(false);
            mChartAllTables.XAxis.SetDrawLabels(false);
            mChartAllTables.AnimateXY(3000, 3000);

            mChartAllTables.Description.Enabled = true;
            mChartAllTables.Description.Text    = "All tables chart";

            mChartAllTables.Invalidate();

            return(mView);
        }
Exemple #10
0
        public static void TableToExcel(XYTestLimit dt, string saveFileName)
        {
            if (dt == null)
            {
                return;
            }

            if (File.Exists(saveFileName))
            {
                File.Delete(saveFileName);
            }

            IWorkbook workbook;
            string    type = Path.GetExtension(saveFileName).ToLower();

            if (type == ".xlsx")
            {
                workbook = new XSSFWorkbook();
            }
            else if (type == ".xls")
            {
                workbook = new HSSFWorkbook();
            }
            else
            {
                workbook = null;
            }
            if (workbook == null)
            {
                return;
            }

            //sheet名
            ISheet sheetLimitLine = workbook.CreateSheet("LimitLine");

            //表头
            IRow  rowHeadLimitLine = sheetLimitLine.CreateRow(0);
            ICell cellHeadType     = rowHeadLimitLine.CreateCell(0);

            cellHeadType.SetCellValue("类型");
            ICell cellHeadX1 = rowHeadLimitLine.CreateCell(1);

            cellHeadX1.SetCellValue("起始频率");
            ICell cellHeadX2 = rowHeadLimitLine.CreateCell(2);

            cellHeadX2.SetCellValue("截止频率");
            ICell cellHeadY1 = rowHeadLimitLine.CreateCell(3);

            cellHeadY1.SetCellValue("起始值");
            ICell cellHeadY2 = rowHeadLimitLine.CreateCell(4);

            cellHeadY2.SetCellValue("截止值");

            //数据
            for (int i = 1; i <= dt.LimitLine.Count; i++)
            {
                LimitLine LL = dt.LimitLine[i - 1];

                IRow rowLimitLine = sheetLimitLine.CreateRow(i);

                ICell cellType = rowLimitLine.CreateCell(0);
                cellType.SetCellValue(LL.Type.ToString());
                ICell cellX1 = rowLimitLine.CreateCell(1);
                cellX1.SetCellValue(LL.X1.ToString());
                ICell cellX2 = rowLimitLine.CreateCell(2);
                cellX2.SetCellValue(LL.X2.ToString());
                ICell cellY1 = rowLimitLine.CreateCell(3);
                cellY1.SetCellValue(LL.Y1.ToString());
                ICell cellY2 = rowLimitLine.CreateCell(4);
                cellY2.SetCellValue(LL.Y2.ToString());
            }

            //转为字节数组
            MemoryStream stream = new MemoryStream();

            workbook.Write(stream);
            var buf = stream.ToArray();

            //保存为Excel文件
            using (FileStream fs = new FileStream(saveFileName, FileMode.Create, FileAccess.Write))
            {
                fs.Write(buf, 0, buf.Length);
                fs.Flush();
            }
        }
Exemple #11
0
        private void ChartAllTables()
        {
            mDicOfDataSets = new Dictionary <string, List <BarEntry> >();

            foreach (StatsTables row in mListStatsTables)
            {
                if (!mListTableNames.Contains(row.table_name))
                {
                    mListTableNames.Add(row.table_name);
                }
            }

            int counter = 0;


            foreach (string table in mListTableNames)
            {
                List <BarEntry> barEntry = new List <BarEntry>();
                foreach (StatsTables item in mListStatsTables)
                {
                    if (table == item.table_name)
                    {
                        barEntry.Add(new BarEntry(counter, item.diff_last_trans));
                        counter++;
                    }
                }
                mDicOfDataSets.Add(table, barEntry);
            }

            BarData data = new BarData();

            int[] chartColors = { Color.DarkRed, Color.DarkGreen };

            foreach (KeyValuePair <string, List <BarEntry> > dicDataSet in mDicOfDataSets)
            {
                dataSet = new BarDataSet(dicDataSet.Value, dicDataSet.Key);

                foreach (BarEntry item in dicDataSet.Value)
                {
                    if (item.GetY() > 70)
                    {
                        dataSet.SetColors(chartColors[0]);
                    }

                    else
                    {
                        dataSet.SetColors(chartColors[1]);
                    }
                }
                data.AddDataSet(dataSet);
            }

            LimitLine limitLine = new LimitLine(70f);

            limitLine.LineColor = Color.DarkRed;
            limitLine.Enabled   = true;

            XAxis xAxis = chartAllTables.XAxis;

            xAxis.SetDrawLabels(false);
            xAxis.Position = XAxis.XAxisPosition.BottomInside;
            xAxis.SetDrawGridLines(true);

            YAxis yAxis = chartAllTables.AxisLeft;

            yAxis.SetDrawGridLines(true);
            yAxis.AddLimitLine(limitLine);

            chartAllTables.Data = data;
            chartAllTables.AxisRight.SetDrawLabels(false);
            chartAllTables.AnimateXY(3000, 3000);

            chartAllTables.Legend.Enabled = false;
            chartAllTables.SetTouchEnabled(true);
            chartAllTables.SetPinchZoom(false);
            chartAllTables.DoubleTapToZoomEnabled = false;

            chartAllTables.Description.Enabled = true;
            chartAllTables.Description.Text    = "All tables chart";

            //chartAllTables.SetBackgroundColor(Color.WhiteSmoke);

            chartAllTables.Invalidate();
        }