Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 2
Регистрация: 23.02.2014
Сообщений: 56
1
.NET 4.x

Векторный рисунок по координатам

31.08.2015, 11:05. Показов 2795. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как создать векторный рисунок если даны координаты ?
у меня есть файл в котором записаны координаты , по ним мне надо нарисовать векторный рисунок(как нарисовать растровый я знаю, там по пикселям , а вот как векторный не знаю)помогите плиз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2015, 11:05
Ответы с готовыми решениями:

Растровый рисунок надо переделать в векторный.
Пожалуйста помогите сделать из обычной фотографии векторный рисунок. Заранее большое спасибо. ...

Растровый рисунок, как вставить bmp-рисунок в окно на полный экран?
Всем здрасьте! По книге которой я учусь , не понятно описано как вставить какую-нибудь картиночку...

Как создать рисунок и сохранить его в bmp (точечный рисунок)
Здравствуйте, пишу свой графический редактор и вот не знаю как из того что я рисую в графе...

Графический Рисунок(нужно составить рисунок на С++ в форме желтой звезды)
нужно составить рисунок на С++ в форме желтой звезды

4
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
31.08.2015, 14:46 2
Gladius6, вот решил Вам набросать программку. Рисует на форме по координатам в файле.
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
27
28
29
30
private PointF[] LoadFile(string path)
{
    List<PointF> list = new List<PointF>();
    using (System.IO.StreamReader sr = new System.IO.StreamReader(path))
    {
        while (!sr.EndOfStream)
        {
            string[] line = sr.ReadLine().Split(';');
            foreach(string str in line)
            {
                str.Trim();
            }
            list.Add(new PointF(Convert.ToSingle(line[0]), Convert.ToSingle(line[1])));
        }
    }
    PointF[] result = new PointF[list.Count];
    for (int i = 0; i < list.Count; i++)
    {
        result[i] = list[i];
    }
    return result;
}
 
private void button1_Click(object sender, EventArgs e)
{
    Graphics g = this.CreateGraphics();
    g.TranslateTransform(this.Width / 2, this.Height / 2);
    g.RotateTransform(180);
    g.DrawLines(Pens.Black, LoadFile(@"C:\coordinats.txt"));
}
Формат текстового файла "coordinats.txt" с координатами (рисунок Слоник):
Кликните здесь для просмотра всего текста
-1; 4
-2; 1
-3; 2
-4; 2
-4; 3
-6; 4
-6; 6
-8; 9
-7; 10
-6; 10
-6; 11
-5; 10
-4; 10
-3; 9
-1; 9,5
1; 9
3; 10
4; 11
4; 16
3; 18
5; 17
6; 17
5; 16
6; 12
6; 9
4; 7
1; 6
2; 5
5; 4
5; 3
4; 4
1; 2
1; 0
3; -4
4; -5
1;-7
1; -6
0; -4
-2; -7
-1,5; -8
-5; -7
-4; -6
-5; -4
-7;-5
-7; -7
-6,5; -8
-10,5; -8
-10; -7
-10; -6
-11; -7
-11; -8
-14; -6
-13; -5
-12; -3
-13; -2
-14; -3
-12; 1
-10; 3
-8; 3
-6; 4
1
1 / 1 / 2
Регистрация: 23.02.2014
Сообщений: 56
02.09.2015, 17:57  [ТС] 3
thanks )
все работает , но можете еще объяснить что каждая строка делает )
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 while (!sr.EndOfStream)
        {
            string[] line = sr.ReadLine().Split(';');
            foreach(string str in line)
            {
                str.Trim();
            }
            list.Add(new PointF(Convert.ToSingle(line[0]), Convert.ToSingle(line[1])));
        }
    }
    PointF[] result = new PointF[list.Count];
    for (int i = 0; i < list.Count; i++)
    {
        result[i] = list[i];
    }
    return result;
 g.TranslateTransform(this.Width / 2, this.Height / 2)
0
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
02.09.2015, 18:43 4
Gladius6, все очень просто. Расписываю все в комментариях:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
private PointF[] LoadFile(string path)
{
    // Мы не знаем заранее, сколько точек будет в файле
    // Поэтому вместо массива создаем List
    List<PointF> list = new List<PointF>();
    // Открываем указанный файл для чтения
    using (System.IO.StreamReader sr = new System.IO.StreamReader(path))
    {
        // Пока НЕ конец файла...
        while (!sr.EndOfStream)
        {
            // ...читаем новую строку
            string stroka = sr.ReadLine();
            // Разделяем строку на массив строк. Разделителем служит символ "точка с запятой"
            string[] line = stroka.Split(';');
            // В каждой строке str внутри line...
            foreach(string str in line)
            {
                // ...удаляем пробелы с двух сторон (на всякий случай)
                str.Trim();
            }
            // Создаем новую точку, конвертируя первую полученную подстроку и вторую
            PointF to4ka = new PointF(Convert.ToSingle(line[0]), Convert.ToSingle(line[1]));
            // Добавляем полученную точку в List
            list.Add(to4ka);
        }
    }
    // Переводим List в массив.
    // Для этого создаем новый массив, размером с List'ом
    PointF[] result = new PointF[list.Count];
    // В цикле просто копируем значения из List в массив result
    for (int i = 0; i < list.Count; i++)
    {
        result[i] = list[i];
    }
    // Возвращаем массив result
    return result;
}
 
private void button1_Click(object sender, EventArgs e)
{
    // В качестве графики используем форму (this)
    Graphics g = this.CreateGraphics();
    // Меняем начало координатной системы в центр формы (делим ширину и высоту формы пополам)
    g.TranslateTransform(this.Width / 2, this.Height / 2);
    // Переворачиваем систему координат на 180 градусов
    g.RotateTransform(180);
    // Рисуем линии (!) черным цветом (Pens.Black) по массиву result из функции LoadFile
    g.DrawLines(Pens.Black, LoadFile(@"C:\coordinats.txt"));
}
Почему мы переворачиваем систему координат смотри:
Векторный рисунок по координатам
1
8941 / 4853 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
03.09.2015, 00:49 5
Вот только рисунок остаётся растровым...
0
03.09.2015, 00:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2015, 00:49
Помогаю со студенческими работами здесь

На странице есть рисунок. При наведении мыши на этот рисунок он должен измениться
На странице есть рисунок. При наведении мыши на этот рисунок он должен измениться. Когда Вы...

Установите в документе рисунок с кнопкой При нажатии кнопки рисунок должен смениться
Ув. пользователи! Прошу помочь мне с некоторыми задачами по Java Script: 1) Установите в...

Как на фоновый рисунок наложить второй рисунок
Как на рисунок (фон) наложить текст с таблицей? Сама таблица есть не в текстовом формате (в Word),...

На листе находится рисунок; можно ли сохранить этот рисунок из книги, как отдельный bmp или jpg файл?
1. На листе находится рисунок. Можно ли, сохранить этот рисунок из книги как отделений Bmp или jpg...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru