WPF Забавный баг с толщиной линии
for (int phi = 0; phi < 360; phi++) { //phi - уголиз-за того что угол в Sin/Cos измеряется в радианах, а не в градусах, то получается что ты рисуешь хордами
Прикольно
Спасибо.
Оставить комментарий
for (int phi = 0; phi < 360; phi++) { //phi - уголиз-за того что угол в Sin/Cos измеряется в радианах, а не в градусах, то получается что ты рисуешь хордами
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 раз, толщина становиться нормальной
Как так то?