예제 #1
0
 private static bool IsGraphSurfaceBoundaryOk(GraphSurface gs)
 {
     if (gs?.GType != GraphType.Boundary)
     {
         return(false);
     }
     return(gs.ObjectTag != null);
 }
예제 #2
0
        private void DrawYAbove(PanelControl pan, double yStep, int yPosition, GraphSurface gs, double minValue, double maxValue)
        {
            double value      = 0;
            double dyPos      = yPosition;
            var    checkValue = Math.Abs(minValue + (20.0 * maxValue));

            do
            {
                dyPos = dyPos - yStep;
                value = value + maxValue;
                DrawYAxisBits(pan, (int)dyPos, gs, value, checkValue);
            } while (dyPos > 0);
        }
예제 #3
0
        private void DrawYBelow(PanelControl pan, double yStep, int yPosition, GraphSurface gs, double minValue, double maxValue)
        {
            double dyPos      = yPosition;
            var    checkValue = Math.Abs(minValue + (20.0 * maxValue));

            dyPos = dyPos - yStep;
            var value = maxValue;

            do
            {
                dyPos = dyPos + yStep;
                value = value - maxValue;

                DrawYAxisBits(pan, (int)dyPos, gs, value, checkValue);
            } while (dyPos < pan.GPan.Height);
        }
예제 #4
0
파일: Marker.cs 프로젝트: jimnash/GraphLib
        private void DrawBoundaryMarkers(GraphSurface gs, PanelControl pan, Pen pp, int y, ref int yOffset)
        {
            var f = new Font("timesnewroman", 8);

            for (var j = 0; j < gs.PtCount; j++)
            {
                var x = Params.GetXScreenPoint(pan, gs, gs.DPts[j].X);
                if (x > 0)
                {
                    pan.GrSurface.DrawLine(pp, x, 0, x, pan.GPan.Height);
                }
                if (gs.DPts[j].Y > 0)
                {
                    var yy = Params.GetYScreenPoint(pan, gs.DPts[j].Y);
                    if (yy > 0)
                    {
                        pan.GrSurface.DrawLine(pp, 0, yy, pan.GPan.Width, yy);
                    }
                }



                double val = gs.DPts[j].X;
                string valueString;
                if (val > 1000)
                {
                    valueString = ((int)val).ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    var str1 = Params.SetPlaces(val);
                    valueString = val.ToString(str1);
                }

                if (_graphParameters.DrawBoundaryStrings)
                {
                    var str = gs.Name + " " + valueString;
                    pan.GrSurface.DrawString(str, f, pp.Brush, x + 1, y);
                }

                if (_graphParameters.ShowDifferenceMarkers)
                {
                    DrawDifferenceMarkers(gs, pan, x, f, pp, ref yOffset);
                }
            }
        }
예제 #5
0
파일: Marker.cs 프로젝트: jimnash/GraphLib
        private static void DrawDifferenceMarkerSet(GraphSurface gs2, PanelControl pan, float refX, int x, Font f, Pen pp, ref int yOffset)
        {
            var typ = gs2.GType;

            if (!IsAnyMarkerOrBoundary(typ))
            {
                return;
            }

            for (var n = 0; n < gs2.PtCount; n++)
            {
                var x2 = Params.GetXScreenPoint(pan, gs2, gs2.DPts[n].X);
                if ((!IsAnyMarker(typ) || x2 <= x) && typ != GraphType.Boundary)
                {
                    continue;
                }
                var y = 30 + (yOffset * 12);
                pan.GrSurface.DrawLine(pp, x, y, x2, y);
                DrawLeftRightArrowHeads(pan, pp, y, x, x2);

                double val = gs2.DPts[n].X - refX;
                string valueString;
                if (val > 1000)
                {
                    valueString = ((int)val).ToString(CultureInfo.InvariantCulture);
                }
                else
                {
                    var str1 = Params.SetPlaces(val);
                    valueString = val.ToString(str1);
                }
                if (x2 > x)
                {
                    pan.GrSurface.DrawString(valueString, f, pp.Brush, x2 + 5, y - 5);
                }
                else
                {
                    pan.GrSurface.DrawString(valueString, f, pp.Brush, x + 5, y - 5);
                }
                yOffset += 1;
            }
        }
예제 #6
0
        private string GetLegendNameLabel(GraphSurface gs)
        {
            string txt;
            var    source = @" [" + gs.Source + @"]";

            if (gs.Source.Length < 1)
            {
                source = " ";
            }

            if (_graphPanel.ShowLegendGraphId)
            {
                txt = @"[" + gs.TagId + @"]" + gs.Name + source;
            }
            else
            {
                txt = gs.Name + source;
            }
            return(txt);
        }
예제 #7
0
        private void DrawYAxisBits(PanelControl pan, int yPosition, GraphSurface gs, double value, double checkValue)
        {
            var f = new Font("timesnewroman", 10);

            if (_graphParameters.DrawTheGrid)
            {
                if (UseGreyGrid)
                {
                    Pen p = new Pen(Color.DarkSlateBlue)
                    {
                        DashStyle = DashStyle.Dot
                    };
                    pan.GrSurface.DrawLine(p, 0, yPosition, pan.GPan.Width, yPosition);
                }
                else
                {
                    pan.GrSurface.DrawLine(Pens.Gainsboro, 0, yPosition, pan.GPan.Width, yPosition);
                }
            }


            if (!_graphParameters.DrawTheYAxis)
            {
                return;
            }

            var str         = Params.GetValueString(checkValue, gs, value);
            var newPosition = yPosition + pan.GPan.Top + 2;
            var top         = pan.GPan.Top + 2;
            var bot         = top + pan.GPan.Height;

            if (newPosition >= bot || newPosition <= top)
            {
                return;
            }
            _graphTabPanel.Cst.GrSurface.DrawLine(Pens.Black, pan.GPan.Left - 5, newPosition, pan.GPan.Left, newPosition);
            if ((newPosition - 5) <= bot)
            {
                _graphTabPanel.Cst.GrSurface.DrawString(str, f, Brushes.Black, 15, newPosition - 7);
            }
        }
예제 #8
0
        private void DrawYGrid(PanelControl pan, double yStep, GraphSurface gs, double minValue, double maxValue)
        {
            var pp = new Pen(Color.Black)
            {
                Width = 1
            };

            if (UseGreyGrid)
            {
                pp.Color = Color.Gainsboro;
            }

            var dyPos = (int)(pan.GPan.Height - 5 - pan.YOffset + ((minValue * yStep) / maxValue));

            DrawYAbove(pan, yStep, dyPos, gs, minValue, maxValue);
            DrawYBelow(pan, yStep, dyPos, gs, minValue, maxValue);


            var yPos = (int)(pan.GPan.Height - 5 - pan.YOffset + ((minValue * yStep) / maxValue));

            if (_graphParameters.OriginalZeroAxis)
            {
                pp.Color = Color.Gainsboro;
                pp.Width = 3;
            }

            pan.GrSurface.DrawLine(pp, 0, yPos, pan.GPan.Width, yPos);

            _graphTabPanel.Cst.GrSurface.ResetTransform();
            _graphTabPanel.Cst.GrSurface.RotateTransform(-90);
            var y   = pan.GPan.Top + pan.GPan.Height / 2;
            var len = GetTextWidth(gs.GyAxisTitle);

            y = y + len / 2;
            _graphTabPanel.Cst.GrSurface.TranslateTransform(_yAxisLabelOffset, y, MatrixOrder.Append);
            _graphTabPanel.Cst.GrSurface.DrawString(gs.GyAxisTitle, _axisFont, Brushes.Black, 0, 0);
            _graphTabPanel.Cst.GrSurface.ResetTransform();
        }
예제 #9
0
파일: Marker.cs 프로젝트: jimnash/GraphLib
        private void DrawDifferenceMarkers(GraphSurface gs, PanelControl pan, int x, Font f, Pen pp, ref int yOffset)
        {
            foreach (var t in pan.TagList)
            {
                if (!t.Visible)
                {
                    continue;
                }

                var gs2 = _graphPanel.GetGraphSurfaceFromTag(t.Tag);

                if (gs2 == null)
                {
                    continue;
                }
                if (gs.TagId == gs2.TagId)
                {
                    continue;
                }

                DrawDifferenceMarkerSet(gs2, pan, gs.DPts[0].X, x, f, pp, ref yOffset);
            }
        }