Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 32
.NET 4.x

Построение созвездия по точкам

07.01.2018, 22:28. Показов 4220. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, нужна помощь:
графическая конфигурация созвездия представлена в виде точек и линий
Необходимо построить рисунок созвездия..
Натолкните на нужную мысль
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2018, 22:28
Ответы с готовыми решениями:

Построение графика по точкам
Подскажите, как в формах вообще можно рисовать графики. Особенно интересует как построить график (разумеется плавный) по набору точек (т.е....

Построение графика по точкам
Собственно как сделать чтоб сетка координат отображалась постоянно, а не строилась вместе с графиком после нажатия кнопки...

Построение 3D кривой по точкам
Все привет! Вопрос следующий: можно ли в маткаде построить 3D кривую по точкам? К примеру Х = 1,2,3,4,5 Y = 1,2,3,4,5 Z = 1,2,3,4,5 ...

27
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 32
08.01.2018, 17:41  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ViterAlex Посмотреть сообщение
при такой организации словаря, где ключом является целое число, а значением строка, где хранятся названия и описание?
Да, ключ целое число: m_consteallationDictonary = new Dictionary<int, ConstellationInfo>();
Значение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
class ConstellationInfo
    {
        public string Name { get; set; }
        public string Prehistory { get; set; }
        public string Coordinates { get; set; }
        public ConstellationInfo(string name, string prehistory, string coordinates)
        {
            Name = name;
            Prehistory = prehistory;
            Coordinates = coordinates;
        }
    }
Добавлено через 1 час 26 минут
ViterAlex, Да все рисует, спасибо, только не читается последняя координата, использую GetPoints.
И как можно чтобы при клике на кнопке менялся рисунок на следующее созвездие например
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.01.2018, 18:07
asopars, берёшь следующее и рисуешь. Нужно указатель какой-нибудь завести или текущий объект.
0
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 32
08.01.2018, 18:14  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
берёшь следующее и рисуешь. Нужно указатель какой-нибудь завести или текущий объект.
Не особо понял как это сделать, например у меня генерируется случайное число и при нажатие на кнопку нужно обратиться к OnPaint?
И так и не понял насчет того почему не считываются последние координаты
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
09.01.2018, 01:28
ViterAlex, кхм, ну неужели не понятно, что ТС дуб нубом(нуб дубом)/нужное подчеркнуть...
пиши уже сразу все варианты...
З.Ы. разводят тебя...
0
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 32
09.01.2018, 17:01  [ТС]
ViterAlex,
В общем, я так и не разобрался как сделать, чтобы при клике на кнопку переходило к случайному/последующему созвездию..
При клике на кнопку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void gameButton_Click(object sender, EventArgs e)
        {
            if (consteallationDictonary[m_randomConstellation].Name == gameTextBox.Text)
            {
                gameLabel.Text = "Ответ верный!";
            }
            else
            {
                gameLabel.Text = "Ответ неверный!";
            }
            m_randomConstellation++;
        }
Onpaint:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            List<Point> points = new List<Point>();
            points = constellationList.GetPoints(consteallationDictonary[m_randomConstellation].Coordinates);
            Pen blackPen = new Pen(Color.Black, 1);
            Point[] curvePoints = new Point[points.Count];
            for (int i = 0; i < points.Count; i++)
            {
                e.Graphics.FillEllipse(Brushes.Blue, points[i].X - 5, points[i].Y - 5, 10, 10);
                curvePoints[i] = points[i];
            }
 
            e.Graphics.DrawPolygon(blackPen, curvePoints);
        }
Никак не могу понять как это сделать...
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.01.2018, 17:14
Метод OnPaint вызывается всегда при перерисовке формы, поэтому нужно программно вызвать перерисовку методом Invalidate()
ну и сам метод OnPaint очистить от лишнего:
C#
1
2
3
4
5
6
7
8
9
10
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    var points = constellationList.GetPoints(consteallationDictonary[m_randomConstellation].Coordinates);
    for (int i = 0; i < points.Count; i++)
    {
        e.Graphics.FillEllipse(Brushes.Blue, points[i].X - 5, points[i].Y - 5, 10, 10);
    }
    e.Graphics.DrawPolygon(Pens.Black, points.ToArray());
}
Организация данных какая-то странная у тебя. Есть список созвездий и отдельно словарь с координатами. Почему бы всё это не держать в одном классе?
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 32
09.01.2018, 17:51  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Организация данных какая-то странная у тебя. Есть список созвездий и отдельно словарь с координатами. Почему бы всё это не держать в одном классе?
Спасибо, в этом разобрался. Да я просто только пытаюсь во всем этом разобраться

У меня только в последнем вопросе сейчас проблема, используй ваш метод GetPoint, входная строка text 100 100 200 150 31 25 78 99 88 131 -> в result пишется 100 100 200 150 31 25 78 99
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static private List<Point> GetPoints(string text)
{
    var result = new List<Point>();
    try
    {
        Regex regexObj = new Regex(@"(\d+)\s(\d+)\s", RegexOptions.IgnoreCase);
        Match matchResult = regexObj.Match(text);
        while (matchResult.Success)
        {
            var x = int.Parse(matchResult.Groups[1].Value);
            var y = int.Parse(matchResult.Groups[2].Value);
            result.Add(new Point(x, y));
            matchResult = matchResult.NextMatch();
        }
    }
    catch (ArgumentException ex)
    {
        throw;
    }
    return result.Count > 0 ? result : null;
}
0
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.01.2018, 18:04
Цитата Сообщение от asopars Посмотреть сообщение
последнем вопросе сейчас проблема
Да, не уследил. Замени на эту строку 6 строку моего метода GetPoints
C#
1
Regex regexObj = new Regex(@"(\d+)\s(\d+)\s?", RegexOptions.IgnoreCase);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2018, 18:04

Построение поверхности по точкам
Доброго времени суток, форумчане! Необходимо построить в MatLab поверхность следующим образом. Ось ох , ось оу . Поверхность задается...

Построение поверхности по точкам
Доброго всем времени суток:) Возникла небольшая проблема: есть координаты точек x,y,z, по ним необходимо построить поверхность. В точности...

Построение графиков по точкам
Здравствуйте, я так понимаю, это очень простая задача, есть три графика, точки вычислил уже, нужно их расположить на одном поле, как это...

Построение графика по точкам
Здравствуйте! Есть задание: построить график по заданным точкам. Проблема в том, что никак не могу разобраться с тем, как это делать,...

Построение графика по точкам
Дано два массива с данными, один с Х-ами, второй с Y-ками. Нужно построить график по точкам.


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru