示例#1
0
文件: CS2d.cs 项目: M-Coast/MathGraph
        //private void DrawLine(DrawingContext drawingContext, CS2dLine line)
        //{
        //    Point p0 = TransformXY(line.StartPoint);
        //    Point p1 = TransformXY(line.EndPoint);

        //    Pen stroke = line.Stroke == null ? null : new Pen(line.Stroke, line.Thickness);

        //    drawingContext.DrawLine(stroke, p0, p1);

        //}

        private void DrawLine(DrawingContext drawingContext, CS2dLine element)
        {
            Point p0 = TransformXY(new Point(XLowerRange, element.Value.GetY(XLowerRange)));
            Point p1 = TransformXY(new Point(XUpperRange, element.Value.GetY(XUpperRange)));

            Pen stroke = element.Stroke == null ? null : new Pen(element.Stroke, element.Thickness);

            drawingContext.DrawLine(stroke, p0, p1);
        }
示例#2
0
文件: CS2d.cs 项目: M-Coast/MathGraph
        private void UpdateElements()
        {
            if (_elements == null)
            {
                return;
            }

            double xMin = double.MaxValue;
            double xMax = double.MinValue;
            double yMin = double.MaxValue;
            double yMax = double.MinValue;

            foreach (CS2dShape element in _elements)
            {
                if (element is CS2dPoint)
                {
                    CS2dPoint t = element as CS2dPoint;
                    if (xMin > t.X)
                    {
                        xMin = t.X;
                    }
                    if (xMax < t.X)
                    {
                        xMax = t.X;
                    }
                    if (yMin > t.Y)
                    {
                        yMin = t.Y;
                    }
                    if (yMax < t.Y)
                    {
                        yMax = t.Y;
                    }
                }
                else if (element is CS2dPath)
                {
                    foreach (Coast.Math.Vector2 v in ((CS2dPath)element).Segments)
                    {
                        if (xMin > v.X)
                        {
                            xMin = v.X;
                        }
                        if (xMax < v.X)
                        {
                            xMax = v.X;
                        }
                        if (yMin > v.Y)
                        {
                            yMin = v.Y;
                        }
                        if (yMax < v.Y)
                        {
                            yMax = v.Y;
                        }
                    }
                }
                else if (element is CS2dLine)
                {
                    CS2dLine t = element as CS2dLine;

                    if (xMin > t.StartPoint.X)
                    {
                        xMin = t.StartPoint.X;
                    }
                    if (xMax < t.StartPoint.X)
                    {
                        xMax = t.StartPoint.X;
                    }
                    if (yMin > t.StartPoint.Y)
                    {
                        yMin = t.StartPoint.Y;
                    }
                    if (yMax < t.StartPoint.Y)
                    {
                        yMax = t.StartPoint.Y;
                    }

                    if (xMin > t.EndPoint.X)
                    {
                        xMin = t.EndPoint.X;
                    }
                    if (xMax < t.EndPoint.X)
                    {
                        xMax = t.EndPoint.X;
                    }
                    if (yMin > t.EndPoint.Y)
                    {
                        yMin = t.EndPoint.Y;
                    }
                    if (yMax < t.EndPoint.Y)
                    {
                        yMax = t.EndPoint.Y;
                    }
                }
                else if (element is CS2dCircle)
                {
                    //CS2dCircle t = element as CS2dCircle;

                    //if (xMin > t.CenterX - t.Radius) xMin = t.CenterX - t.Radius;
                    //if (xMax < t.CenterX + t.Radius) xMax = t.CenterX + t.Radius;
                    //if (yMin > t.CenterX - t.Radius) yMin = t.CenterX - t.Radius;
                    //if (yMax < t.CenterX + t.Radius) yMax = t.CenterX + t.Radius;
                }
            }
            if (xMax - xMin <= 0)
            {
                Errored = true;
            }
            if (yMax - yMin <= 0)
            {
                Errored = true;
            }

            DisireXLowerRange = xMin - (xMax - xMin) * RangeExtensionRate;
            DisireXUpperRange = xMax + (xMax - xMin) * RangeExtensionRate;
            DisireYLowerRange = yMin - (yMax - yMin) * RangeExtensionRate;
            DisireYUpperRange = yMax + (yMax - yMin) * RangeExtensionRate;
        }