2015-08-21 5 views
0

Как получить реальную прямую линию с C#? код ниже рисует линию, отлично, но эта линия не идеальна, она не пиксель за пикселем, есть ли лучший код там, который создает лучшую, точную прямую линию?C# нарисовать прямую линию

namespace Dimension3D 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void canvas_Paint(object sender, PaintEventArgs e) 
    { 
     Graphics gObject = canvas.CreateGraphics(); 

     Brush red = new SolidBrush(Color.Red); 
     Pen redPen = new Pen(red, 8); 

     gObject.DrawLine(redPen, 10, 10, 35, 500); 
    } 
} 
} 
+1

что наклонная прямая линия? – Kritner

+0

только что отредактировал, что я имел в виду «лучше, точно, прямая линия» – Traitor

+2

Почему это было бы прямо, когда координаты x были бы разными? – Shawn

ответ

0

То, что вы видите, как прямой на самом деле трюк , Он «сглаживается», поэтому зубчатые части окружены заштрихованными пикселями (см. Ниже). Это объясняет, как сделать это лучше, чем я могу.

https://msdn.microsoft.com/en-us/library/system.drawing.graphics.smoothingmode.aspx

Изображения ниже одинаковы. Верхнее только увеличено.

Zoomed In

Zoomed Out

0

Вы должны отключить AntiAlias ​​для рисования идеальных линий.

gObject.SmothingMode = SmoothingMode.None; 

Не забудьте положить его обратно в Default после так что вы не изменить рендеринга изображения или другие вещи, которые нужно anitialias хорошо выглядеть

+0

Где я могу поместить эту строку кода в свой код? – Traitor

+0

Прежде чем рисовать линии, он в основном изменяет режим рендеринга на «без сглаживания» –

+0

Полезно знать, но, вероятно, точно противоположно тому, что он хочет. – TaW

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