public override void RecalculateProperties()
        {
            ShapeParameters parameters = CalculateShapeParams();

            if (parameters.deltaX < parameters.deltaY)
            {
                if (Y == parameters.minY)
                {
                    X = parameters.minX;
                    Y = parameters.minY;
                }
                else
                {
                    X = parameters.minX;
                    Y = parameters.maxY - parameters.minSide;
                }
            }
            else
            {
                if (X == parameters.minX)
                {
                    X = parameters.minX;
                    Y = parameters.minY;
                }
                else
                {
                    X = parameters.maxX - parameters.minSide;
                    Y = parameters.minY;
                }
            }
            SetWidthHeightAndCoords(parameters.minSide);
        }
예제 #2
0
        //public override void DrawQuad(QuadParameters parms)
        //{
        //    using (DeviceContextHandler dch = GetDeviceContextHandler())
        //    using (GraphicsPath path = new GraphicsPath())
        //    {
        //        PointF[] points = new PointF[]
        //        {
        //            new PointF(parms.X1, parms.Y1),
        //            new PointF(parms.X2, parms.Y2),
        //            new PointF(parms.X3, parms.Y3),
        //            new PointF(parms.X4, parms.Y4)
        //        };

        //        path.AddPolygon(points);

        //        if (!Style.FillParameters.Disabled)
        //        {
        //            dch.DrawingSurface.FillPath(Style.FillParameters.ToBrush(), path);
        //        }

        //        if (!Style.StrokeParameters.Disabled)
        //        {
        //            dch.DrawingSurface.DrawPath(Style.StrokeParameters.ToPen(), path);
        //        }
        //    }
        //}

        //public override void DrawRectangle(RectangleParameters parms)
        //{
        //    using (DeviceContextHandler dch = GetDeviceContextHandler())
        //    {
        //        RectangleF rect = Style.GetAdjustedRectangle(parms);

        //        if (!Style.FillParameters.Disabled)
        //        {
        //            dch.DrawingSurface.FillRectangle(Style.FillParameters.ToBrush(), rect.X, rect.Y, rect.Width, rect.Height);
        //        }

        //        if (!Style.StrokeParameters.Disabled)
        //        {
        //            dch.DrawingSurface.DrawRectangle(Style.StrokeParameters.ToPen(), rect.X, rect.Y, rect.Width, rect.Height);
        //        }
        //    }
        //}

        public override void DrawShape(ShapeParameters parms)
        {
            using (DeviceContextHandler dch = GetDeviceContextHandler())
                using (GraphicsPath path = GetShapePath(parms.Shape))
                {
                    PushMatrix();
                    Translate(parms.X, parms.Y);

                    if (!Style.FillParameters.Disabled)
                    {
                        dch.DrawingSurface.FillPath(Style.FillParameters.ToBrush(), path);
                    }

                    if (!Style.StrokeParameters.Disabled)
                    {
                        dch.DrawingSurface.DrawPath(Style.StrokeParameters.ToPen(), path);
                    }

                    if (parms.Shape.Texture != null)
                    {
                        PointF tl = new PointF(path.PathPoints[0].X, path.PathPoints[0].Y);
                        PointF tr = new PointF(path.PathPoints[1].X, path.PathPoints[1].Y);
                        PointF bl = new PointF(path.PathPoints[3].X, path.PathPoints[3].Y);
                        PointF br = new PointF(path.PathPoints[2].X, path.PathPoints[2].Y);

                        using (Image texture = ((Image)parms.Shape.Texture).ToTrapezoid(tl, tr, bl, br))
                        {
                            dch.DrawingSurface.DrawImage(texture.Bitmap, new PointF());
                        }
                    }

                    PopMatrix();
                }
        }
예제 #3
0
        public override void Draw(Graphics g, Pen pen)
        {
            ShapeParameters parameters = CalculateShapeParams();

            if (parameters.deltaX < parameters.deltaY)
            {
                if (Y == parameters.minY)
                {
                    g.DrawEllipse(pen, parameters.minX, parameters.minY, parameters.minSide, parameters.minSide);
                }
                else
                {
                    g.DrawEllipse(pen, parameters.minX, parameters.maxY - parameters.minSide, parameters.minSide, parameters.minSide);
                }
            }
            else
            {
                if (X == parameters.minX)
                {
                    g.DrawEllipse(pen, parameters.minX, parameters.minY, parameters.minSide, parameters.minSide);
                }
                else
                {
                    g.DrawEllipse(pen, parameters.maxX - parameters.minSide, parameters.minY, parameters.minSide, parameters.minSide);
                }
            }
        }
        public override void RecalculateProperties()
        {
            ShapeParameters parameters = CalculateShapeParams();

            X    = parameters.minX;
            EndX = parameters.maxX;
            Y    = parameters.minY;
            EndY = parameters.maxY;

            Width  = parameters.deltaX;
            Height = parameters.deltaY;
        }
예제 #5
0
        //public override void DrawLine(LineParameters parms)
        //{
        //    SetStroke();
        //    _openGL.Begin(BeginMode.Lines);
        //    _openGL.Vertex(parms.X1, parms.Y1);
        //    _openGL.Vertex(parms.X2, parms.Y2);
        //    _openGL.End();
        //}

        //public override void DrawRectangle(RectangleParameters parms)
        //{
        //    RectangleF rect = Canvas.Style.GetAdjustedRectangle(parms);

        //    if (!Canvas.FillParameters.Disabled)
        //    {
        //        SetFill();
        //        _openGL.Begin(BeginMode.Polygon);
        //        _openGL.Vertex(rect.X, rect.Y);
        //        _openGL.Vertex(rect.Right, rect.Y);
        //        _openGL.Vertex(rect.Right, rect.Bottom);
        //        _openGL.Vertex(rect.X, rect.Bottom);
        //        _openGL.End();
        //    }

        //    if (!Canvas.StrokeParameters.Disabled)
        //    {
        //        SetStroke();
        //        _openGL.Begin(BeginMode.LineLoop);
        //        _openGL.Vertex(rect.X, rect.Y);
        //        _openGL.Vertex(rect.Right, rect.Y);
        //        _openGL.Vertex(rect.Right, rect.Bottom);
        //        _openGL.Vertex(rect.X, rect.Bottom);
        //        _openGL.End();
        //    }
        //}

        public override void DrawShape(ShapeParameters parms)
        {
            if (!Style.FillParameters.Disabled && parms.Shape.EndMode == EndShapeMode.Close)
            {
                SetFill();
                AddShapeVertices(parms.Shape, true);
            }

            if (!Style.StrokeParameters.Disabled)
            {
                SetStroke();
                AddShapeVertices(parms.Shape, false);
            }
        }
예제 #6
0
        public override void DrawShape(ShapeParameters parms)
        {
            PushMatrix();
            Translate(parms.X, parms.Y);

            if (!Style.FillParameters.Disabled && parms.Shape.EndMode == EndShapeMode.Close)
            {
                SetFill();
                AddShapeVertices(parms.Shape, true);
            }

            if (!Style.StrokeParameters.Disabled)
            {
                SetStroke();
                AddShapeVertices(parms.Shape, false);
            }

            PopMatrix();
        }
예제 #7
0
        //public override void DrawQuad(QuadParameters parms)
        //{
        //    using (DeviceContextHandler dch = GetDeviceContextHandler())
        //    using (GraphicsPath path = new GraphicsPath())
        //    {
        //        PointF[] points = new PointF[]
        //        {
        //            new PointF(parms.X1, parms.Y1),
        //            new PointF(parms.X2, parms.Y2),
        //            new PointF(parms.X3, parms.Y3),
        //            new PointF(parms.X4, parms.Y4)
        //        };

        //        path.AddPolygon(points);

        //        if (!Style.FillParameters.Disabled)
        //        {
        //            dch.DrawingSurface.FillPath(Style.FillParameters.ToBrush(), path);
        //        }

        //        if (!Style.StrokeParameters.Disabled)
        //        {
        //            dch.DrawingSurface.DrawPath(Style.StrokeParameters.ToPen(), path);
        //        }
        //    }
        //}

        //public override void DrawRectangle(RectangleParameters parms)
        //{
        //    using (DeviceContextHandler dch = GetDeviceContextHandler())
        //    {
        //        RectangleF rect = Style.GetAdjustedRectangle(parms);

        //        if (!Style.FillParameters.Disabled)
        //        {
        //            dch.DrawingSurface.FillRectangle(Style.FillParameters.ToBrush(), rect.X, rect.Y, rect.Width, rect.Height);
        //        }

        //        if (!Style.StrokeParameters.Disabled)
        //        {
        //            dch.DrawingSurface.DrawRectangle(Style.StrokeParameters.ToPen(), rect.X, rect.Y, rect.Width, rect.Height);
        //        }
        //    }
        //}

        public override void DrawShape(ShapeParameters parms)
        {
            using (DeviceContextHandler dch = GetDeviceContextHandler())
                using (GraphicsPath path = GetShapePath(parms.Shape))
                {
                    PushMatrix();
                    Translate(parms.X, parms.Y);

                    if (!Style.FillParameters.Disabled)
                    {
                        RectangleF bounds = path.GetBounds();
                        Brush      b      = Style.FillParameters.ToBrush(bounds);
                        dch.DrawingSurface.FillPath(b, path);
                        //dch.DrawingSurface.FillPath(Style.FillParameters.ToBrush(path.GetBounds().Size), path);
                    }

                    if (!Style.StrokeParameters.Disabled)
                    {
                        dch.DrawingSurface.DrawPath(Style.StrokeParameters.ToPen(), path);
                    }

                    PopMatrix();
                }
        }