2016-06-20 7 views
0

Ich habe eine List mit float Koordinaten und ich versuche, ein Rechteck um eine zuvor gezeichnete Linie zu zeichnen.Zeichnung Getbounds Rechteck oder RechteckF?

Graphics G = e.Graphics;  
Pen pen5 = new Pen(Color.DodgerBlue, 0.01f); 
var rect2 = new RectangleF(); 

GraphicsPath maliOkvir = new GraphicsPath(); 
maliOkvir.AddLine(((float)(odabraniSegment[0].startX)), 
        (float)(odabraniSegment[0].startY), 
        (float)(odabraniSegment[0].endX), 
        (float)(odabraniSegment[0].endY)); 

rect2 = maliOkvir.GetBounds(); 
G.DrawRectangle(pen5, rect2); 

Ich erhalte einen Fehler auf rect2 Teil:

G.DrawRectangles(pen5, rect2); 

kann nicht von 'System.Drawing.RectangleF' auf 'System.Drawing.RectangleF []'

konvertieren

Wie kann ich das beheben? mehrere Variationen von Rectangle und RectangleF versucht, keine zusammenarbeitet .. das Endergebnis sollte wie folgt aussehen:

enter image description here

+1

Auf den ersten Blick sieht es aus wie auch immer 'e 'ist, hat die Methode' DrawRectangles' darin - was darauf hindeutet, dass es ein Array von 'RectangleF's (' RectangleF [] ') braucht - daher Ihr Fehler. Betrachtet man die 'Graphics' Klasse, hat sie eine' .DrawRectangle' (Singular) Methode: https://msdn.microsoft.com/en-us/library/sx8yykw8(v=vs.110).aspx Bist du dir sicher? Verwenden Sie die richtige Methode? –

+1

'DrawRectangles' erwartet ein Array von Rechtecken, wahrscheinlich möchten Sie' DrawRectangle' (ohne die s am Ende) – DavidG

+0

@DavidG Sie haben Recht, mein Schlechter, es war ein Rest von früheren Versuchen, es zu beheben. – Romy

Antwort

2

Die Methode DrawRectangles erwartet ein Array von Rectangle oder RectangleF Objekten, aber Sie geben nur ein einzelnes Element weiter. Sie sollten entweder:

  1. Switch die singuläre Version des Verfahrens zu verwenden, dh DrawRectangle
  2. Pass in einem Array:

    G.DrawRectangles(pen5, new [] { rect2 }); 
    
+1

oder 3. Übergeben Sie die Float-Werte: 'g.DrawRectangle (pen5, rect2.X, rect2.Y, rect2.Width, rect2.Height);': – LarsTech

+0

In der Tat @LarsTech, war versucht, diesen zu addieren, aber es ist immer ein PITA, um sich an die Parameterreihenfolge zu erinnern. – DavidG

2

Sie verwenden die DrawRectangles() Methode von System.Drawing.Graphics, die eine Reihe von Rectangle s erwartet.

die einzigartige Version verwenden: DrawRectangle():

G.DrawRectangle(pen5, rect2); // Singular 

MSDN gibt Ihnen (viel) von Informationen über die Graphics Klasse.

Hoffe, das hilft!

+0

Ein Fehler meinerseits, es sollte DrawRectangle gewesen sein, ich brauche nur eine, aber ich brauche nur die Funktionen, alle Float-Werte zu nehmen, damit die Sache funktionieren kann :) – Romy

+0

Froh, @Romy geholfen zu haben! Einfacher Fehler zu machen. Vergessen Sie nicht, als Antwort zu markieren, wenn Sie fertig sind. Happy Programmierung :) –

+0

Obwohl das Extra "s" ein Fehler war, bleibt das gleiche Problem:/ – Romy