2015-02-27 3 views
0

Заметил более странное поведение, которое, кажется, бросает вызов точке C# GraphicsPath.AddLines. AddLines представляет собой серию Связанные сегменты линии. Следующий код, кажется, сделать это не так:XNA GraphicsPath.AddLines, похоже, имеет пробелы

 Bitmap BuildingBitmap = new Bitmap(MaxX - MinX, MaxY - MinY); 
     Graphics BuildingGraphics = Graphics.FromImage(BuildingBitmap); 
     BuildingGraphics.Clear(Color.Transparent); 
     GraphicsPath BuildingShape = new GraphicsPath(); 
     BuildingShape.StartFigure(); 
     BuildingShape.AddLines(BuildingPointsArray); 
     BuildingShape.CloseFigure(); 

     BuildingGraphics.DrawPath(new Pen(Color.Black, 1.5f), BuildingShape); 

BuildingPointsArray является массив из следующих пунктов

 
7 0 
58 6 
55 45 
62 45 
60 59 
67 60 
66 82 
47 80 
46 96 
0 92 
7 0 

Графическое изображение этого с Excel диаграммы рассеяния показывает форма здания является правильным и никаких пробелов с первенствует ничья линейная функция. Похоже, я не имею репутацию, так что я не могу размещать фотографии: Heres Imgur ссылки: Excel График http://i.imgur.com/aqSl2TC.png

Однако с моим выходом PNG, мы можем видеть, что есть две щели:

AddLines PNG http://i.imgur.com/zgqD3YZ.png

Любые мысли о том, почему это может быть? Я пробовал увеличивать толщину линий, думая, что это может быть проблема рендеринга. Не повезло.

ответ

0

Линии, безусловно, подключены, но кажется, что они не совсем подходят для вашего Bitmap.

сделать что:

Bitmap BuildingBitmap = new Bitmap(MaxX - MinX + 1 , MaxY - MinY + 1); 
+0

Это сделал. Когда линии с малым разрешением нарисованы на диагоналях, нужно выбрать пиксель, это может быть вне растрового изображения. Я мог бы использовать Bitmap BuildingBitmap = новый битмап (MaxX - MinX + 2, MaxY - MinY + 2); и рисовать все +1, чтобы это не происходило на верхней и левой сторонах. Спасибо. – Brent

 Смежные вопросы

  • Нет связанных вопросов^_^