Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Filled Arc in SharpDX

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Filled Arc in SharpDX

    Hi:

    I was looking at the documentation of SharpDX and could not find how to create a filled arc. Let's say something like FillEllipse But with starting and ending angle. I see that NinjaTrader has an Arc drawing tool. Could be is using geometry sink. Anyways just asking around for hints to be able to make some pie chart.

    Regards

    #2
    Hello waldoalvarez, thanks for your post.

    The FillGeometry method can be used in this case:

    https://ninjatrader.com/support/help...llgeometry.htm

    The Arc drawing tool also demonstrates how to do this. See the source code for the Arc drawing tool in the Drawing Tools folder of the NinjaScript Editor.

    Best regards,
    -ChrisL

    Comment


      #3

      The basic idea. The DxBrush needs to be defined but the docs on that process are extensive


      Code:
        Point sp = new Point(x,y);
        Point ep = new Point(x,y);
        double ArcRadius=8.1;
        RenderArcShape(sp, ep, ArcRadius);​
      
      
          private void RenderArcShape(Point sp, Point ep, double ar)
          {
              
              SharpDX.Direct2D1.AntialiasMode oldAntialiasMode = RenderTarget.AntialiasMode;
              RenderTarget.AntialiasMode = SharpDX.Direct2D1.AntialiasMode.PerPrimitive;
              
              SharpDX.Direct2D1.ArcSegment arcSegment = new SharpDX.Direct2D1.ArcSegment
              {
                  ArcSize            = SharpDX.Direct2D1.ArcSize.Small,
                  Point            = new SharpDX.Vector2((float) ep.X, (float) ep.Y),
                  SweepDirection    = SharpDX.Direct2D1.SweepDirection.CounterClockwise,
                  Size            = new SharpDX.Size2F((float)ar, (float)ar) //Arc radius
              };
      
              // Create the arc between the line two end points
              SharpDX.Direct2D1.PathGeometry arcGeometry = new SharpDX.Direct2D1.PathGeometry(Core.Globals.D2DFactory);
              SharpDX.Direct2D1.GeometrySink geometrySink = arcGeometry.Open();
              geometrySink.BeginFigure(new SharpDX.Vector2((float)sp.X, (float)sp.Y), SharpDX.Direct2D1.FigureBegin.Filled);
              geometrySink.AddArc(arcSegment);
              geometrySink.EndFigure(SharpDX.Direct2D1.FigureEnd.Open);
              geometrySink.Close();
              RenderTarget.FillGeometry(arcGeometry, DxBrush);
      
              arcGeometry.Dispose();
              geometrySink.Dispose();
              
              RenderTarget.AntialiasMode = oldAntialiasMode;
          }
      ​
      Last edited by Bidder; 05-29-2024, 02:28 PM.

      Comment


        #4
        Hello Bidder,

        Do you have a question about this code or are you just sharing?

        Comment


          #5
          Didn't see a lot of info on arc segments on the forum so just sharing some code that works

          Comment

          Latest Posts

          Collapse

          Topics Statistics Last Post
          Started by Geovanny Suaza, 02-11-2026, 06:32 PM
          0 responses
          599 views
          0 likes
          Last Post Geovanny Suaza  
          Started by Geovanny Suaza, 02-11-2026, 05:51 PM
          0 responses
          344 views
          1 like
          Last Post Geovanny Suaza  
          Started by Mindset, 02-09-2026, 11:44 AM
          0 responses
          103 views
          0 likes
          Last Post Mindset
          by Mindset
           
          Started by Geovanny Suaza, 02-02-2026, 12:30 PM
          0 responses
          558 views
          1 like
          Last Post Geovanny Suaza  
          Started by RFrosty, 01-28-2026, 06:49 PM
          0 responses
          557 views
          1 like
          Last Post RFrosty
          by RFrosty
           
          Working...
          X