Пример #1
0
        protected virtual void dispose(bool disposing)
        {
            if (!disposed)
            {
                disposed = true;

                if (disposing)
                {
                    if (DeviceContext != null)
                    {
                        Direct2dFactory.Dispose();
                        DirectWriteFactory.Dispose();
                        DeviceContext.Device.Dispose();
                        DeviceContext = null;
                    }
                }
            }
        }
Пример #2
0
        public DrawEllipse() : base()
        {
            StrokeStyleProperties style = new StrokeStyleProperties(dashCap: CapStyle.Triangle, miterLimit: 10.0f, dashStyle: DashStyle.DashDotDot);

            _dashDotDotStyle = Direct2dFactory.CreateStrokeStyle(style);
        }
Пример #3
0
        public PathGeometries() : base()
        {
            // Left mountain
            _leftMountainGeometry = Direct2dFactory.CreatePathGeometry();
            var sink = _leftMountainGeometry.Open();

            sink.SetFillMode(FillMode.Winding);
            sink.BeginFigure(new PointF(346, 255), FigureBegin.Filled);
            Span <PointF> lines = stackalloc PointF[]
            {
                new PointF(267, 177),
                new PointF(236, 192),
                new PointF(212, 160),
                new PointF(156, 255),
                new PointF(346, 255)
            };

            sink.AddLines(lines);
            sink.EndFigure(FigureEnd.Closed);
            sink.Close();

            // Right mountain
            _rightMountainGeometry = Direct2dFactory.CreatePathGeometry();
            sink = _rightMountainGeometry.Open();
            sink.SetFillMode(FillMode.Winding);
            sink.BeginFigure(new PointF(575, 263), FigureBegin.Filled);
            lines = stackalloc PointF[]
            {
                new PointF(481, 146),
                new PointF(449, 181),
                new PointF(433, 159),
                new PointF(401, 214),
                new PointF(381, 199),
                new PointF(323, 263),
                new PointF(575, 263)
            };

            sink.AddLines(lines);
            sink.EndFigure(FigureEnd.Closed);
            sink.Close();

            // Sun
            _sunGeometry = Direct2dFactory.CreatePathGeometry();
            sink         = _sunGeometry.Open();
            sink.SetFillMode(FillMode.Winding);
            sink.BeginFigure(new PointF(270, 255), FigureBegin.Filled);
            sink.AddArc(new ArcSegment(new PointF(440, 255), new SizeF(85, 85)));
            sink.EndFigure(FigureEnd.Closed);

            sink.BeginFigure(new PointF(299, 182), FigureBegin.Hollow);
            sink.AddBezier((299, 182), (294, 176), (285, 178));
            sink.AddBezier((276, 179), (272, 173), (272, 173));
            sink.EndFigure(FigureEnd.Open);

            sink.BeginFigure(new PointF(354, 156), FigureBegin.Hollow);
            sink.AddBezier((354, 156), (358, 149), (354, 142));
            sink.AddBezier((349, 134), (354, 127), (354, 127));
            sink.EndFigure(FigureEnd.Open);

            sink.BeginFigure(new PointF(322, 164), FigureBegin.Hollow);
            sink.AddBezier((322, 164), (322, 156), (314, 152));
            sink.AddBezier((306, 149), (305, 141), (305, 141));
            sink.EndFigure(FigureEnd.Open);

            sink.BeginFigure(new PointF(385, 164), FigureBegin.Hollow);
            sink.AddBezier((385, 164), (392, 161), (394, 152));
            sink.AddBezier((395, 144), (402, 141), (402, 142));
            sink.EndFigure(FigureEnd.Open);

            sink.BeginFigure(new PointF(408, 182), FigureBegin.Hollow);
            sink.AddBezier((408, 182), (416, 184), (422, 178));
            sink.AddBezier((428, 171), (435, 173), (435, 173));
            sink.EndFigure(FigureEnd.Open);

            sink.Close();

            // River
            _riverGeometry = Direct2dFactory.CreatePathGeometry();
            sink           = _riverGeometry.Open();
            sink.SetFillMode(FillMode.Winding);
            sink.BeginFigure(new PointF(183, 392), FigureBegin.Filled);
            sink.AddBezier((238, 284), (472, 345), (356, 303));
            sink.AddBezier((237, 261), (333, 256), (333, 256));
            sink.AddBezier((335, 257), (241, 261), (411, 306));
            sink.AddBezier((574, 350), (288, 324), (296, 392));
            sink.EndFigure(FigureEnd.Open);
            sink.Close();
        }