2014-12-04 7 views
5

Ich habe 4 Float-Punkte (Positionen in 2D) und ich möchte ein Polygon (mit Scheitelpunkten an diesen 4 Positionen) in 2D mit Sharpdx zu zeichnen und zu füllen. Kann mir bitte jemand helfen? Ich bin verloren. ein Beispielcode wäre besser für mich als Newbee Danke im VorausZeichnen und füllen Polygon mit 4 Vertices (Positionen in 2D) über sharpdx API

+0

komm keine Hilfe! – smoothumut

+3

Wie wurde das als unklar geschlossen? Das ist vollkommen klar. Ich habe es ohne die geringste Anstrengung verstanden. Wenn Sie also dafür stimmen, diese Frage zu klären, sollten Sie vielleicht Ihre Karrierewahl als Programmierer überprüfen. Oder sind Sie mit der grafischen Programmierung nicht vertraut? In diesem Fall, wiederum, kein Grund zu stimmen, um dies zu schließen, als unklar, wenn Sie Begriffe wie Zeichnen, Füllen und Vieleck nicht vertraut sind. –

+0

Ich stimme M.B.Neron zu; Ich habe es bearbeitet, um den Titel und die Frage für andere klarer zu machen. – ToolmakerSteve

Antwort

6

Ich habe gefunden, wie man ein Polygon zeichnet und füllt. Ich habe die drawGeometry- und fillGeometry-Methoden des RenderTarget-Objekts verwendet.

ich schon erwähnt, wird nicht, wie die directx zu initialisieren

PathGeometry geo1; 
    GeometrySink sink1; 

     FactoryD2D factory = new FactoryD2D(); 
     var dpi = factory.DesktopDpi; 
     RenderTarget renderTarget; 

     renderTarget = new RenderTarget(factory, backBuffer, new RenderTargetProperties() 
     { 
      DpiX = dpi.Width, 
      DpiY = dpi.Height, 
      MinLevel = SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT, 
      PixelFormat = new SharpDX.Direct2D1.PixelFormat(Format.Unknown, AlphaMode.Ignore), 
      Type = RenderTargetType.Hardware, 
      Usage = RenderTargetUsage.None 
     }); 

     // and after all initialization 

      pta[0] = new SharpDX.Vector2(pts[4].X, pts[4].Y); 
      pta[1] = new SharpDX.Vector2(pts[5].X, pts[5].Y); 
      pta[2] = new SharpDX.Vector2(pts[6].X, pts[6].Y); 
      pta[3] = new SharpDX.Vector2(pts[7].X, pts[7].Y); 

      geo1 = new PathGeometry(factory); 
      sink1 = geo1.Open(); 
      sink1.BeginFigure(pta[0], new FigureBegin()); 
      sink1.AddLines(new SharpDX.Vector2[] { pta[1], pta[2], pta[3] }); 
      sink1.EndFigure(new FigureEnd()); 
      sink1.Close(); 

     Color penColor = Color.Black; 
     SolidColorBrush penBrush = new SolidColorBrush(g, new SharpDX.Color(penColor.R, penColor.G, penColor.B)); 
     Color color = AddColor(pt, zmin, zmax); 
     SolidColorBrush aBrush = new SolidColorBrush(g, new SharpDX.Color(color.R, color.G, color.B)); 

      renderTarget.DrawGeometry(geo1, penBrush); 
      renderTarget.FillGeometry(geo1, aBrush); 
      geo1.Dispose(); 
      sink1.Dispose(); 

Sie andere GEOS und Senken um hinzufügen können, um mehr Formen auf, um es

Hoffnung, diese Hilfe zu jemandem hinzufügen, die verloren geht, und zu versuchen, finden Sie eine Antwort verzweifelt wie ich

+0

Vielen Dank !!! – bboyle1234