Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/75: Рейтинг темы: голосов - 75, средняя оценка - 4.88
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120

Нарисовать сетку

06.04.2015, 01:51. Показов 14669. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как отрисовать сетку на picturebox-е из 10 на 20 квадратиков. 10 квадратиков вверх (-2,5mV до 2,5mV), 20 вправо. Сетка нужна для отрисовки на ней выделенного пользователем куска графика в том же масштабе,что и на рисунке в оригинале.
Миниатюры
Нарисовать сетку   Нарисовать сетку  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2015, 01:51
Ответы с готовыми решениями:

Нарисовать сетку по картинке на PictureBox
Задача - создать измерительную линейку поверх загружаемой картинки. Картинка может меняться, линейка - тоже (меняется масштаб,...

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

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

12
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
06.04.2015, 02:54
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/// <summary>
/// Рисование сетки
/// </summary>
/// <param name="e">Аргументы события прорисовки</param>
/// <param name="w">Ширина ячейки</param>
/// <param name="h">Высота ячейки</param>
/// <param name="xCells">Количество ячеек по-горизонтали</param>
/// <param name="yCells">Количество ячеек по-вертикали</param>
void DrawGrid(PaintEventArgs e, int w, int h, int xCells, int yCells) {
    e.Graphics.Clear(Color.White);//Фон
    using (Pen pen = new Pen(Color.Aqua, 2)) {
        //Горизонтальные линии
        for (int i = 1; i < xCells; i++)
            e.Graphics.DrawLine(pen, i * w, 0, i * w, h * yCells);
        //Вертикальные линии
        for (int i = 1; i < yCells; i++)
            e.Graphics.DrawLine(pen, 0, i * h, w * xCells, i * h);
    }
}
1
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
06.04.2015, 03:19  [ТС]
мне нужно отрисовать сетку в окошке pbResult как только загрузится туда фрагмент графика. Вот мой проект.Загружаешь туда картинку экг изображения опцией File-Load Image. Картинка загрузится в picturebox1. Затем нажимаете File-Select и выбираете произвольную область графика в загруженном изображении(какой-нибудь маленький кусочек ).Получите бинаризированное изображение выделенного куска в окошке pbResult( где указана сегментация выберите Adaptive treshhold чтоб получить ч\б график). Вот как там отрисовать сетку в окошке pbResult(применить к окошку ваш код)???. Отрисовав там можно будет узнать расстояние между максимумами графика. Но нужно так отрисовать,чтобы график и сетка в одном масштабе были как в оригинале,иначе ничего не получится. Может как нибудь привести их к одному стандарту масштабному??.

Нужно сделать как сказано в текстовом документе экгтекст.
пункт 3.3.1 и 3.4

Ссылку на проект кинул в личку.Спасибо
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
06.04.2015, 05:52
Цитата Сообщение от Злой_дед Посмотреть сообщение
нужно так отрисовать,чтобы график и сетка в одном масштабе были как в оригинале,иначе ничего не получится.
Значит, нужно как-то получить масштаб сетки в загруженном изображении. Проще всего, самостоятельно выделить на исходном изображении область, скажем 10×10 клеток и рассчитать размер одной клетки. Чем больше клеток, тем выше точность.
Могу сделать такой вариант.
1
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
06.04.2015, 22:28  [ТС]
Если можно,конечно,спасибо вам большое.В текстовом документе том говорится как раз что нужно получить масштаб одного милливольта в пикселях,только вот я не понимал как это сделать.выбрать кусок маленький с картинки, отсчитать 5 клеток, умножить на два,получим один милиивольт в пикселях.

Добавлено через 7 часов 5 минут
я думаю как только выделяеть фрагмент,он бинаризируется,а затем в tabpage2 при нажатии кнопки "Добавить",вставлять график уже в масштабе как вы сказали. А сетку отрисовывать при нажатии галочки "Отрисовать сетку". Там по моему 10 на 20 клеток отрисовано,если не ошибаюсь.
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.04.2015, 02:08
Цитата Сообщение от Злой_дед Посмотреть сообщение
нужно получить масштаб одного милливольта в пикселях
На исходном изображении как определяется масштаб? Одна клеточка это сколько милливольт?
1
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
07.04.2015, 09:13  [ТС]
один милливольт это десять миллиметров на ленте ЭКГ или десять маленьких квадратов на ленте ЭКГ. более толстые линии ограничивают область в 5 маленьких клеток.В текстовом документе тот что я в архиве вместе с проектом кинул есть про это,по моему глава 3.3.1 .спасибо
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.04.2015, 15:12
И всё же я не понимаю, ведь область выделяется произвольно, так? Значит нужно определить, сколько милливольт ты выбрал и, исходя из этого, строить сетку
1
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
09.04.2015, 15:15  [ТС]
ну да,получается так как вы сказали
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.04.2015, 15:19
На изображении мы заранее знаем сколько там всего милливольт?
1
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
09.04.2015, 15:33  [ТС]
3.3.1. Нахождение одного милливольта
Как мы уже знаем 1 милливольт это 10 мм на ленте ЭКГ (или 10 маленьких квадратов) на ленте ЭКГ. Будем находить его так: 1)Найдем начало сетки сверху, 2)Проведем сглаживание по Гауссу, а затем пороговое преобразование исходного изображения (уже переведенного в градации серого3)От этой точки отступим вниз и возьмем достаточно малый кусок изображения (так как для выделения одного милливольта вся сетка не нужна), 4)Пользуясь тем, что более толстые линии ограничивают область из 5 маленьких квадратов, размер которой составляет 5 мм, находим расстояние в пикселях между этими линиями, 5)Умножаем его на 2 и кладем в глобальную переменную onemilliVolt. Таким образом, мы получим величину одного милливольта в пикселях.

вот как там написано. может это вам поможет.Спасибо

Добавлено через 6 минут
Также предполагается, что в приложение отсканированные ЭКГ поступают по частям: сначала идет кусок с калибровочным милливольтом или так называемым контрольным милливольтом (без калибровочного сигнала запись ЭКГ считается неправильной), а затем идут остальные куски.

Почему сначала должен поступать скан с калибровочным сигналом. В начале записи подается стандартное напряжение в 1 милливольт, которое должно отобразить на ленте отклонение в 10 мм (назовем его “эталонный” милливольт), в норме, по крайней мере, в одном из стандартных или усиленных отведений от конечностей, амплитуда должна превышать 5 мм, а в грудных отведениях - 8 мм. Если амплитуда ниже, это называется сниженный вольтаж ЭКГ, который бывает при некоторых патологических состояниях. Таким образом, сравнивая “эталонное” значение одного милливольта (которое мы уже нашли) с калибровочным сигналом, мы можем выдать сообщение о наличии/отсутствии патологии в зависимости от соотношения этих величин.

Отклонение в 1 милливольт можете пронаблюдать на снимке,который я прикрепил с проектом.

Добавлено через 4 минуты
Получается как только прошёл импульс в 1 милливольт-1 сантиметр или 10 маленьких клеточек(каллибровочный импульс),та точка будет являться нулём,началом отсчёта шкалы.От неё уже мы шкалу строим.Потолок вверх это 2,5 милливольт(больше я не встречал ещё).Потолок вниз это -2,5 милливольт.
0
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
09.04.2015, 15:41  [ТС]
Вот как то на снимке описал как смог
Миниатюры
Нарисовать сетку  
0
1 / 1 / 2
Регистрация: 25.02.2014
Сообщений: 120
09.04.2015, 18:17  [ТС]
Скажу зачем мне это нужно,то есть зачем мне при выделении куска экг отрисовывать сетку.
Программа должна считать расстояние между пиками(по амплитуде) так называемыми R-зубцами.Считать нужно количество квадратиков между этими пиками. Выделяться,к примеру, будет область из 2 сегментов,затем автоматически бинаризируются они(картинки с примерами прикрепил). Потом должна отрисовываться сетка в масштабе с выделенными пиками. Проект который выделяет пики у меня есть(хотя и немного стоит доработать,но он рабочий),я отправил в личку вам.
Миниатюры
Нарисовать сетку   Нарисовать сетку   Нарисовать сетку  

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2015, 18:17
Помогаю со студенческими работами здесь

Закрасить сетку PictureBox цветом
Здравствуйте! Возможно, такая тема уже была, но на тех, что были, я ответа не нашел. У меня есть PictureBox размера NxM. Через двойной...

Сделать в DataGridView сетку 10х10
Помогите сделать в DataGridView сетку 10х10 . Я первый раз пользуюсь данным элементом.

(DataGridView) как сделать пустую сетку?
Здравствуйте! Как я могу сделать отображение сетки DataGridView, если в контроле нет никаких данных, либо их меньше, чем размер контрола?...

Как отделить график экг и сетку от фона?
Как отделить график экг и сетку от фона? Выделяю область экг,фильтрую выделенную часть от пыли(размываю), а дальше тупик.Примеров...

Как заполнить сетку кругам через 1 клетку?
private void BJ_btn_Picture_23_Click(object sender, EventArgs e) { BJ_PicBox1.Image = (Image)new...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru