コード例 #1
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
        StrokeStyle CreateNewStroke(UStroke s)
        {
            StrokeStyle ret = null;
            var         sp  = new StrokeStyleProperties()
            {
                DashCap    = Translate(s.dashCap),
                EndCap     = Translate(s.endCap),
                StartCap   = Translate(s.startCap),
                LineJoin   = Translate(s.lineJoin),
                DashStyle  = Translate(s.dashStyle),
                MiterLimit = s.mitreLimit,
                DashOffset = s.offset
            };

            if (s.dashStyle == StrokeType.custom)
            {
                ret = new StrokeStyle(realRenderer.renderTarget.Factory, sp, s.custom);
            }
            else
            {
                ret = new StrokeStyle(realRenderer.renderTarget.Factory, sp);
            }
            realRenderer.renderTarget.Disposed += new EventHandler <EventArgs>((o, e) => s.Invalidate());
            return(ret);
        }
コード例 #2
0
        void dropArrowThing_draw(IUnifiedDraw ud, USolidBrush brsh, UStroke strk)
        {
            var       ddr = dropArrowThing.DisplayRectangle;
            Rectangle rr  = ddr.Inflated(new Thickness(-1f));
            float     rad = (float)ddr.Size.height / 4f;

            brsh.color = new Color(0.6f);
            ud.FillRoundedRectangle(rr, rad, rad, brsh);
            brsh.color       = new Color(0.7f);
            rr               = ddr.Inflated(new Thickness(-.5f));
            strk.strokeWidth = 1f;
            ud.DrawRoundedRectangle(rr, rad, rad, brsh, strk);
            brsh.color = new Color(0);
            var drw = ddr.width;
            var drh = ddr.height;
            var drt = ddr.top;
            var drl = ddr.left;
            var p1  = new Point(drl + drw / 4f, drt + drh / 3f);
            var p2  = new Point(drl + 2f * drw / 4f, drt + 2f * drh / 3f);
            var p3  = new Point(drl + 3f * drw / 4f, drt + drh / 3f);

            strk.strokeWidth = 1.5f;
            ud.DrawLine(p1, p2, brsh, strk);
            ud.DrawLine(p2, p3, brsh, strk);
        }
コード例 #3
0
        Pen CreateNewPen(UBrush b, UStroke s)
        {
            // Link to invalidation of brush, once.
            //  the cache of the pen is stored in the stroke.
            VoidAction inval = delegate { };

            inval = () =>
            {
                s.Invalidate();
                b.changed -= inval;
            };
            b.changed += inval;

            // FIXME advanced features not used!
            Pen ret;

            ret            = new Pen(CreateBrush(b));
            ret.DashCap    = Translate1(s.dashCap);
            ret.EndCap     = Translate2(s.endCap);
            ret.StartCap   = Translate2(s.startCap);
            ret.LineJoin   = Translate(s.lineJoin);
            ret.DashStyle  = Translate(s.dashStyle);
            ret.MiterLimit = s.mitreLimit;
            ret.DashOffset = s.offset;

            // FIXME maybe not right for compatibility with other renderes?
            ret.Alignment = PenAlignment.Center;

            if (s.dashStyle == StrokeType.custom)
            {
                ret.DashPattern = s.custom;
            }

            return(ret);
        }
コード例 #4
0
ファイル: OTKDraw.cs プロジェクト: windygu/noForms
 public void DrawLine(Point start, Point end, UBrush brush, UStroke stroke)
 {
     GL.Begin(PrimitiveType.Quads);
     setCoordColor(brush, start.X, start.Y);
     GL.Vertex2(start.X, start.Y);
     setCoordColor(brush, end.X, end.Y);
     GL.Vertex2(end.X, end.Y);
     GL.End();
 }
コード例 #5
0
ファイル: OTKDraw.cs プロジェクト: windygu/noForms
 public void DrawPath(UPath path, UBrush brush, UStroke stroke)
 {
     foreach (var f in path.figures)
     {
         int st = rel.renderData.sofwareBuffer.Count;
         BufferFigureVC(f, brush, f.open, true);
         int cnt = rel.renderData.sofwareBuffer.Count - st;
         rel.renderData.bufferInfo.Add(new RenderInfo(st, cnt, ArrayData.Vertex | ArrayData.Color, PrimitiveType.Lines));
     }
 }
コード例 #6
0
ファイル: OTKDraw.cs プロジェクト: windygu/noForms
        public void DrawRectangle(Rectangle rect, UBrush brush, UStroke stroke)
        {
            // generate sw buffer { Vx,Vy,r,g,b,a } ...
            int st = rel.renderData.sofwareBuffer.Count;

            bufferRectData(rect, brush);
            int len = rel.renderData.sofwareBuffer.Count - st;
            var ri  = new RenderInfo(st, len, ArrayData.Vertex | ArrayData.Color, PrimitiveType.LineLoop);

            rel.renderData.bufferInfo.Add(ri);
        }
コード例 #7
0
 Pen CreatePen(UBrush b, UStroke s)
 {
     return(s.Retreive <SDG_RenderElements>(new NoCacheDelegate(() => CreateNewPen(b, s))) as Pen);
 }
コード例 #8
0
        public void DrawRoundedRectangle(NoForms.Common.Rectangle rect, float radX, float radY, UBrush brush, UStroke stroke)
        {
            var rr = ShapeHelpers.RoundedRectangle(rect, radX, radY);

            realRenderer.graphics.DrawPath(CreatePen(brush, stroke), rr);
        }
コード例 #9
0
 public void DrawRectangle(NoForms.Common.Rectangle rect, UBrush brush, UStroke stroke)
 {
     realRenderer.graphics.DrawRectangle(CreatePen(brush, stroke), rect.left, rect.top, rect.width, rect.height);
 }
コード例 #10
0
 public void DrawLine(NoForms.Common.Point start, NoForms.Common.Point end, UBrush brush, UStroke stroke)
 {
     realRenderer.graphics.DrawLine(CreatePen(brush, stroke), SDGTr.trF(start), SDGTr.trF(end));
 }
コード例 #11
0
 public void DrawEllipse(NoForms.Common.Point center, float radiusX, float radiusY, UBrush brush, UStroke stroke)
 {
     realRenderer.graphics.DrawEllipse(CreatePen(brush, stroke), center.X - radiusX, center.Y - radiusY, radiusX * 2, radiusY * 2);
 }
コード例 #12
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
 public void DrawEllipse(Point center, float radiusX, float radiusY, UBrush brush, UStroke stroke)
 {
     realRenderer.renderTarget.DrawEllipse(new Ellipse(D2DTr.tr(center), radiusX, radiusY), CreateBrush(brush), stroke.strokeWidth, CreateStroke(stroke));
 }
コード例 #13
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
 StrokeStyle CreateStroke(UStroke s)
 {
     return(s.Retreive <SharpDX_RenderElements>(new NoCacheDelegate(() => CreateNewStroke(s))) as StrokeStyle);
 }
コード例 #14
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
        public void DrawRoundedRectangle(Rectangle rect, float radX, float radY, UBrush brush, UStroke stroke)
        {
            var rr = new RoundedRectangle()
            {
                Rect    = D2DTr.tr(rect),
                RadiusX = radX,
                RadiusY = radY
            };

            realRenderer.renderTarget.DrawRoundedRectangle(rr, CreateBrush(brush), stroke.strokeWidth, CreateStroke(stroke));
        }
コード例 #15
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
 public void DrawRectangle(Rectangle rect, UBrush brush, UStroke stroke)
 {
     realRenderer.renderTarget.DrawRectangle(D2DTr.tr(rect), CreateBrush(brush), stroke.strokeWidth, CreateStroke(stroke));
 }
コード例 #16
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
 public void DrawLine(Point start, Point end, UBrush brush, UStroke stroke)
 {
     realRenderer.renderTarget.DrawLine(D2DTr.tr(start), D2DTr.tr(end), CreateBrush(brush), stroke.strokeWidth, CreateStroke(stroke));
 }
コード例 #17
0
ファイル: OTKDraw.cs プロジェクト: windygu/noForms
        public void DrawRoundedRectangle(Rectangle rect, float radX, float radY, UBrush brush, UStroke stroke)
        {
            int st = rel.renderData.sofwareBuffer.Count;

            RRPoints(rect, radX, radY, brush);
            int cnt = rel.renderData.sofwareBuffer.Count - st;

            rel.renderData.bufferInfo.Add(new RenderInfo(st, cnt, ArrayData.Vertex | ArrayData.Color, PrimitiveType.LineLoop));
        }
コード例 #18
0
ファイル: D2DDraw.cs プロジェクト: windygu/noForms
 public void DrawPath(UPath path, UBrush brush, UStroke stroke)
 {
     realRenderer.renderTarget.DrawGeometry(CreatePath(path), CreateBrush(brush), stroke.strokeWidth, CreateStroke(stroke));
 }
コード例 #19
0
 public void DrawPath(UPath path, UBrush brush, UStroke stroke)
 {
     realRenderer.graphics.DrawPath(CreatePen(brush, stroke), CreatePath(path));
 }
コード例 #20
0
ファイル: OTKDraw.cs プロジェクト: windygu/noForms
 public void DrawEllipse(Point center, float radiusX, float radiusY, UBrush brush, UStroke stroke)
 {
     GL.Begin(PrimitiveType.LineLoop);
     foreach (var pt in GeometryLib.EllipseUtil.GetEllipse(radiusX, radiusX, .1f))
     {
         float x = pt.X + center.X;
         float y = pt.Y + center.Y;
         setCoordColor(brush, x, y);
         GL.Vertex2(x, y);
     }
     GL.End();
 }