2016-06-20 12 views
0

У меня есть List с координатами float, и я пытаюсь нарисовать прямоугольник вокруг ранее нарисованной линии.Рисование getbounds прямоугольника или прямоугольникаF?

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); 

Я получаю сообщение об ошибке на rect2 части:

G.DrawRectangles(pen5, rect2); 

Не удается преобразовать из 'System.Drawing.RectangleF' до 'System.Drawing.RectangleF []

Как я могу это исправить? попробовал несколько вариантов Rectangle и RectangleF, никто не работает вместе .. конечный результат должен выглядеть следующим образом:

enter image description here

+1

На первый взгляд, это выглядит как какой-то 'е 'is, имеет в нем метод DrawRectangles, который ссылается на то, что он может взять массив' RectangleF '(' RectangleF [] ') - следовательно, ваша ошибка. Глядя на класс «Graphics», он имеет метод «.DrawRectangle» (единственный): https://msdn.microsoft.com/en-us/library/sx8yykw8(v=vs.110).aspx Вы уверены, что используя правильный метод? –

+1

'DrawRectangles' ожидает массив прямоугольников, вы, вероятно, хотите« DrawRectangle »(без s на конце) – DavidG

+0

@DavidG вы правы, я плохо, это было от предыдущих попыток исправить. – Romy

ответ

2

Метод DrawRectangles ожидает массив из Rectangle или RectangleF объектов, но вы проходите мимо всего элемента. Вы должны либо:

  1. переключатель использовать особую версию метода, т.е. DrawRectangle
  2. Pass в массиве:

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

или 3. Перейдите в значения поплавков: 'g.DrawRectangle (pen5, rect2.X, rect2.Y, rect2.Width, rect2.Height);' :-) – LarsTech

+0

Действительно @LarsTech, был соблазн добавить этот, но всегда PITA помнит порядок параметров. – DavidG

2

Вы используете DrawRectangles() метод System.Drawing.Graphics, который ожидает массив Rectangle с.

Используйте особую версию: DrawRectangle():

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

MSDN дает вам (много) информации о Graphics класса.

Надеюсь, это поможет!

+0

Ошибка с моей стороны, это должен был быть DrawRectangle, мне нужен только один, но мне просто нужны функции для всех значений float, поэтому вещь может работать :) – Romy

+0

Рад помочь @Romy! Легкая ошибка. Не забудьте отметить как ответ, когда закончите. Счастливое программирование :) –

+0

Хотя дополнительные «с» были ошибкой, та же проблема все еще остается:/ – Romy