WPF Забавный баг с толщиной линии

uaha1979

Хочу нарисовать окружность (просто проба, потом буду графики строить)
В итоге у нее толщина не 1, а 5-6 на глаз, если оценивать.
В чем проблема?
Код C#
public MainWindow {
this.InitializeComponent;

PathFigure myPathFigure = new PathFigure;
myPathFigure.StartPoint = new Point(0,0);

LineSegment myLineSegment = new LineSegment;
PathSegmentCollection myPathSegmentCollection = new PathSegmentCollection;

//************************** Собсно рисование *******************************************
for (int phi = 0; phi < 360; phi++) { //phi - угол
myLineSegment = new LineSegment;
myLineSegment.Point = new Point(50*Math.Cos(phi) + 100, 50*Math.Sin(phi) + 100);
myPathSegmentCollection.Add(myLineSegment);
}
//************************** /Собсно рисование *******************************************
myPathFigure.Segments = myPathSegmentCollection;

PathFigureCollection myPathFigureCollection = new PathFigureCollection;
myPathFigureCollection.Add(myPathFigure);

PathGeometry myPathGeometry = new PathGeometry;
myPathGeometry.Figures = myPathFigureCollection;

Path1.StrokeThickness = 1;
Path1.Data = myPathGeometry;
}
Разметка XAML
<ViewBox>
<Canvas Height="200" Width="200">
<Path Name="Path1" Stroke="#00FF00">
</Path>
</Canvas>
</Viewbox>

А когда вместо
for(...phi < 360...){
myLineSegment.Point = new Point(5*Math.Cos(phi) + 5, 5*Math.Sin(phi) + 5);
}
Пишешь
for (int phi = 0; phi < 36000; phi++) {
myLineSegment = new LineSegment;
myLineSegment.Point = new Point(5*Math.Cos(0.01*phi) + 5, 5*Math.Sin(0.01*phi) + 5);
myPathSegmentCollection.Add(myLineSegment);
}
Увеличивая количество точек в 100 раз, толщина становиться нормальной :shocked:
Как так то?

Dasar

for (int phi = 0; phi < 360; phi++) { //phi - угол
из-за того что угол в Sin/Cos измеряется в радианах, а не в градусах, то получается что ты рисуешь хордами

uaha1979

Хы =)
Прикольно
Спасибо.
Оставить комментарий
Имя или ник:
Комментарий: