Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
1

Получение переменных из строки, нарисованной на форме

10.12.2016, 14:05. Показов 1127. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При решении возникла такая необходимость как взятие строковых значений с формы(ориентируясь на их координаты расположения) и использовать их как параметры для процедуры и переменные.

Вот собственно что пытаюсь сделать(См. Рисунок)

И я хочу ориентируясь на координаты считать эти 2 значения в свою процедуру(которая прекрасно работает но на консоли).

После процедуры они изменятся и вернутся на свои места(Но это я пока не рассматриваю в этом вопросе)

Пока важно узнать как их "затолкать в процедуру"

Как мне сделать так чтобы занести эти 2 числа в параметры для процедуры и в переменные?

(код самой процедуры не выкладываю,так как он пока не важен)

Конечно были попытки сделать что-то страшное и ужасное,но компилятор сразу же забил тревогу.Оно и понятно.

Pascal
1
2
3
4
5
//1-ое число //    
    var S1:= gr.DrawString(montekarlo(diap1, diap2).ToString('N2'), new System.Drawing.Font('Times New Roman', 10, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, 345, 190);
 
//2-ое число //   
var S2:= gr.DrawString(montekarlo(diap1, diap2).ToString('N2'), new System.Drawing.Font('Times New Roman', 10, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, 405, 190);
Миниатюры
Получение переменных из строки, нарисованной на форме  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2016, 14:05
Ответы с готовыми решениями:

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

Перемещение нарисованной фигуры по форме
Как осуществить перемещение фигуры? Например, квадрата.

Сохранение картинки, нарисованной на форме, в файл
В общем, есть задача - открыть картинку на форме, как-нибудь изменить ее и сохранить снова в файл,...

Как сделать перемещение нарисованной фигуры по форме
Всем добрый вечер. Подскажите как сделать перемещение нарисованной фигуры по форме? Допустим...

6
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
10.12.2016, 14:21  [ТС] 2
Рисую с помощью таких функций как

Pascal
1
gr.DrawEllipse(System.Drawing.Pens.Black, new System.Drawing.Rectangle(565, 180, 35, 35)); // значение правого поддерева(правое)
А значение показано внизу,где montekarlo - это число,которое получено с помощью процедуры montekarlo
Pascal
1
gr.DrawString(montekarlo(diap1, diap2).ToString('N2'), new System.Drawing.Font('Times New Roman', 10, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, 440, 90);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
10.12.2016, 16:32 3
Цитата Сообщение от redseven Посмотреть сообщение
взятие строковых значений с формы(ориентируясь на их координаты расположения)
Вся проблема в том - что после того, как эти строки отрисованы через DrawString, там нет никаких строковых значений, а есть просто картинка.

Следовательно, вопрос: хочешь заморочиться с распознаванием текста с изображения, или будет достаточно сохранить в каком-нибудь из многочисленных контейнеров соответствие области на экране (Rectangle, скажем) и строки текста, который в эту область пишется, чтобы потом по координатам точки пробежаться по контейнеру, найти то значение Rectangle, которое содержит заданную точку и получить соответствующую строку, с которой потом делать что угодно?
1
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
10.12.2016, 17:02  [ТС] 4
2-ой вариант наверное будет лучше,заморочки точно не нужны.

Обидно то, что в Pascal.ABC.NET как и во всём .NET коллекции максимум 2 элемента позволяют хранить и то ключ-значение.
Я сделал список с полученными значениями и словарь с координатами где одна координата это ключ,а 2-ая значение.

Pascal
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
var lst1 := new List<string>;
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  lst1.Add(montekarlo(diap1, diap2).ToString('N2'));
  
  var dict1 :=  new Dictionary<double,double>;
   dict1[435] := 80;
   dict1[565] := 80;
   dict1[375] := 130;
   dict1[470] := 130;
   dict1[530] := 130;
   dict1[600] := 130;
   dict1[340] := 180;
   dict1[400] := 180;
   dict1[445] := 180;
   dict1[490] := 180;
   dict1[565] := 180;
   dict1[530] := 195;
   dict1[600] := 195;
   dict1[650] := 180;
А про такие контейнеры на распознавание я либо не слышал,либо забыл(в виду неиспользования),скорее 2-ое.
Скажите пожалуйста,а где можно ознакомится с примером такого контейнера соответствие области на экране?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
10.12.2016, 17:12 5
redseven, вот не надо. Tuple может содержать и 2 и три элемента, так что сколько угодно можно хранить. В конце концов можно объединить данные в структуру/класс и хранить десятки данных без потери удобства использования. Но тебе-то зачем?

Я бы, скажем, в качестве ключа хранил ту самую область, в которой рисовалась окружность, ибо окружности пересекаться не могут, и этот ключ будет уникальным.
Pascal
1
var dc : Dictionary<Rectangle, String>;
тебе вполне достаточно, чтобы хранить расположение как ключ, а саму строку - как значение.
1
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
10.12.2016, 18:14  [ТС] 6
Спасибо вам за подсказку
А Rectangle придётся объявить в отдельный класс потому что ошибку даёт
Объявлял вот так и потом вашу подсказку пытался тоже

Pascal
1
var dict1 :=new Dictionary<System.Drawing.Rectangle, String>;
Pascal
1
dict1[440,90,35,35] := montekarlo(diap1, diap2).ToString('N2');//--Неправильное число параметров при обращении к свойству Item
Пробовал так

Pascal
1
var dict1 :=new Dictionary<System.Drawing.Rectangle(440,90,35,35),  montekarlo(diap1, diap2).ToString('N2').ToString('N2')>;//Ожидался тип
Получается что всё равно создавать класс надо и сделать его типом в словаре?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
10.12.2016, 18:50 7
Лучший ответ Сообщение было отмечено redseven как решение

Решение

Pascal
1
dict1[new System.Drawing.Rectangle(440,90,35,35)] := montekarlo(diap1, diap2).ToString('N2');
1
10.12.2016, 18:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2016, 18:50
Помогаю со студенческими работами здесь

Как сделать плавное перемещение нарисованной фигуры по форме?
Здравствуйте, у меня есть задача: Передвижение фигур. Вообщем выполняю её так: создаю стартовую...

Использование переменных, объявленных в одной форме, в другой форме
Возможно ли где-нибудь или как-нибудь объявить переменные, которые можно использовать на всех...

Добавление строки при превышении заданных символов в столбце таблицы, нарисованной в консоли
Нужно вывести таблицу заданного формата в консоли C# так, чтобы при вводе значений строка...

Получение переменных из FormData
Приветствую всех, возник вопрос. Как присвоить в php значения из FormData ---- (js) Как правильно...


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

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