1 / 1 / 0
Регистрация: 10.05.2011
Сообщений: 46
1

Толщина линии меняется

15.05.2011, 23:22. Показов 3295. Ответов 6
Метки нет (Все метки)

Хочу нарисовать окружность (просто проба, потом буду графики строить)
В итоге у нее толщина не 1, а 5-6 на глаз, если оценивать.
В чем проблема?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
XML
1
2
3
4
5
6
<Viewbox Grid.Row="1">
     <Canvas Height="200" Width="200">
        <Path Name="Path1" Stroke="#00FF00">
        </Path>
    </Canvas>
</Viewbox>
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2011, 23:22
Ответы с готовыми решениями:

Толщина линии
подскажите пожалуйста, я с помощью NumericUpDown хочу устанавливать толщину линии на графике.......

Толщина линии на canvas
Здравствуйте. Есть такой метод, который рисует линию на canvas canvas.drawLine (float startX,...

Толщина линии в chart
Здравствуйте, проблема такая, необходимо нарисовать вертикальные линии, отвечающие за границы тела...

Толщина линии Applet
Добрый день! Не могу рисовать линиями разной толщины. При нажатии на &quot;W&quot; , с этого момента ,...

6
1 / 1 / 0
Регистрация: 10.05.2011
Сообщений: 46
15.05.2011, 23:30  [ТС] 2
А когда вместо
C#
1
2
3
for(...phi < 360...){
                myLineSegment.Point = new Point(5*Math.Cos(phi) + 5, 5*Math.Sin(phi) + 5);
}
Пишешь
C#
1
2
3
4
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 раз, толщина становиться нормальной
0
14 / 14 / 3
Регистрация: 30.08.2011
Сообщений: 23
30.08.2011, 11:04 3
Вместо
C#
1
Cos(phi)
и
C#
1
Sin(phi)
используй
C#
1
Cos(180*phi/Math.PI)
и
C#
1
Sin(180*phi/Math.PI)
.

Добавлено через 2 часа 49 минут
Извиняюсь. Надо наоборот:
C#
1
Math.PI*phi/180
0
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
30.08.2011, 11:19 4
ViewBox скалирует видимо... Уберите его и попробуйте отрисовать.
0
14 / 14 / 3
Регистрация: 30.08.2011
Сообщений: 23
30.08.2011, 12:33 5
Цитата Сообщение от dioxidin Посмотреть сообщение
ViewBox скалирует видимо... Уберите его и попробуйте отрисовать.
Дело то не в этом. Дело в том что окружность рисуется линиями с шагом в 57 градусов. 360 таких хорд толщиной в 1 образуют кольцо.
0
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
30.08.2011, 15:25 6
Если вы подумали, что я подумал, что скалируется заливка, то вы ошиблись. Толщина линий вьюбоксом также скалируется.
0
14 / 14 / 3
Регистрация: 30.08.2011
Сообщений: 23
31.08.2011, 04:27 7
Цитата Сообщение от dioxidin Посмотреть сообщение
Если вы подумали, что я подумал, что скалируется заливка
Нет, я так не подумал. И если посмотреть внимательно, то видно, что первый LineSegment имеет нормальную толщину, а толщина задаётся для всего Path. Значит вопрос скалирования чего-либо исключен.
Все же придется рисовать для исключения непонимания. На скриншотах результат выполнения каждого третьего цикла, на последнем скриншоте - результат выполнения 30 циклов. Надеюсь теперь будет понятно.
Изображения
     
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.08.2011, 04:27
Помогаю со студенческими работами здесь

Изменение свойств линии (цвет, толщина)
Вот рисую я линию в FireMonkey на PainyBox методом DrawLine. Как можно назначить её цвет, толщину?...

Толщина линии в таблице при Print Preview
Обнаружил глюк, толщина линии в таблице при Print preview где то жирная, где то нет. В форме все...

Не работает кнопка del и не отображается графически толщина линии
Проблема № 1 - не могу стереть объект посредством кнопки del, хотя вне автокада эта функция...

Меняется толщина текста при выполнении какой либо анимации на странице
Доброго времени суток, не знаю в тот ли раздел создал тему, но больше подходит сюда, вообщем такая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru