|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
Поместить картинку в DrawGrid из указанного пути26.05.2015, 15:04. Показов 6209. Ответов 89
Метки нет (Все метки)
Всем доброго дня. Имеется папка с картинками (50х50). Каждой картинке соответствует свой номер (наверное сделаю с помощью if). В простом гриде есть один столбец и в нем в строках (колличество строк>i>=0)занесены номера картинок. И есть аналогичный DrawGrid. Подскажите, как поместить картинки в строки (колличество строк>i>=0) DrawGrid из указанного пути (из папки на компе) и какие форматы возможны? Или таже задача с одной картинкой.
Может быть есть возможность не использовать DrawGrid, а просто создавать объект Image и помещать его на форму из указанного пути? Спасибо. Добавлено через 1 час 24 минуты Вроде разобрался. По кнопке
Можно както это использовать, задавать не полностью имя в пути к файлу, а только его часть, а именно первые два символа(этот z) ?
0
|
||||||
| 26.05.2015, 15:04 | |
|
Ответы с готовыми решениями:
89
Вставить картинку в поле DrawGrid Обработка файла указанного в пути
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 04.06.2015, 13:11 | |
|
0
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|||
| 05.06.2015, 09:42 [ТС] | |||
|
Посидел, посмотрел - как то неправильно я сделал. Глючит, когда создается панель, похоже пересоздаются все остальные и если быстро создаются - вообще может вылететь с ошибкой в любом месте програмы. .
0
|
|||
|
Супер-модератор
|
||
| 05.06.2015, 11:10 | ||
|
alarmCount в моем примере - это количество тех самых красных панелек, которые должны мигать. То есть, я бы делал так: пришел сигнал тревоги - сгенерировал панель, добавил ее в массив (отдельный массив, а не все вместе, как ты делаешь) или в std::vector<TPanel*>, что еще лучше, не надо отдельно хранить длину массива и позже можно спокойно удалить ставшую неактуальной панельку, и в таймере переключал бы видимость панелей, присутствующих в контейнере.
Добавлено через 6 минут А вообще - я бы наверное сделал возможность каждой из панелек быть с красным прямоугольником в углу (написал бы своего наследника от TPanel), и по прибытию сигнала тревоги просто включал бы какой-то флажок. А потом, в таймере, просто обход всех панелек и проверка флажка, если выставлен - то вызывать какой-то метод, toggleAlarm(), например, который на этой текущей панели будет показывать/скрывать прямоугольник , означающий "тревога"... Количество действий сильно уменьшится, и программа разгрузится. Уже не надо будет дополнительно хранить эти панели, искать, куда их расположить, и т.д., просто найти ту панель, которая нужна, и выставить ей флажок. У тебя проект слишком большой (11-я форма, 26-я - уже немало), чтобы легкомысленно относиться к подобным вещам. Чем дальше - тем больше будет глюков и непонятного поведения, и, видишь, ты уже с этим сталкиваешься...
1
|
||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|||||||
| 05.06.2015, 12:17 [ТС] | |||||||
|
у меня сейчас ситуация,когда я создаю (готовлю) карту в отдельном приложении. Загружаю в него план помещений, все картинки девайсов в панельках. На выходе получаю первое - файл jpg - картинка карты с расставленными девайсами и второе - координаты девайсов (int), которые сохранились в процессе расстановки. Потом я эту карту подгружаю в основную программу и при сигнале тревоги формирую красную мигающую панельку по тем или иным координатам. Таким образом эта панелька появляется в нужном месте готовой карты над нужным девайсом. Проблема в том, что событий будет как минимум 5 (в том числе и сигнал тревоги) и все это, как снежный ком будет нагружать программу по графике. Кроме того я попробовал вместо панелей создавать Animate, на там вообще нагружает по черному, хотя размер файла 34 кб. Сечас попробовал использовать Frame. Пишу
Тут приоритет на наименьшую нагрузку очень важен. И можно например как то сделать, чтобы не создавался динамический объект, если по тем координатам, по которым он будет визуализирован, аналогичный объект уже есть. Спасибо.
0
|
|||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 07.06.2015, 00:17 [ТС] | |
|
Вроде добился стабильной работы. Ничего не пересоздается заново. У меня там просто достаточно сложно с идентификацией событий. Через флаги все сделал. Но очень хотел бы не создавать динамический объект, если по тем координатам, по которым он будет визуализирован, аналогичный объект уже есть. Я так понимаю, нужно добавлять в условие, помимо наступления события что то еще. Вообще это реально? и про std::vector<TPanel*> объясните плиз в трех словах как создать через вектор массив панелей и как с ними работать? Это уровень повыше по всей видимости. Гуглю - нифига не понятно.( спасибо!
0
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 10.06.2015, 15:04 [ТС] | ||||||
|
И не подскажете такой момент. У меня карта - Image1 в Panel1, к ней тоже применены
0
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 12.06.2015, 17:34 [ТС] | |
|
не получается...
0
|
|
|
Супер-модератор
|
||||||
| 13.06.2015, 10:00 | ||||||
|
У меня уже тут все перепуталось, что делали, как делали, какие обработчики событий навешаны. Так что, скорее всего, без просмотра проекта тут уже не обойтись. Слишком много добавлено, чтобы можно было так, наобум, сказать в чем дело.
Добавлено через 16 часов 14 минут Итак, продолжаем нашу сагу ![]() По поводу перемещения панелек вместе с картой - проблема в том, что ты добавил карту на TPanel, чтобы ее тоже можно было перемещать, а при перетаскивании картинок из ScrollBox-а этого не учел. И картинки эти бросаются на Form, никакого отношения к карте не имея. Естественно при этом, что при перетаскивании карты они остаются на месте. Как исправить:
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 13.06.2015, 10:13 [ТС] | |
|
Спасибо, все работает. Еще есть несколько вопросов, по мере продвижения...
когда я например загружаю карту предположим 3000 пх на 2000 пх - он сохраняет только видимую часть карты(которая видна на мониторе) - то, что за границей - все белое. Но сам сохраненный файл имеет те же 3000 на 2000. Наверное всю карту никак не сохранить? так же есть вопрос про панельки в скролбоксе и масштабирование карты- как сделать, чтобы я например хватаю панельку из скрол бокса, перетаскиваю на карту, и при её отпускании все панельки, которые были под панелькой, которую я схватил, поднялись на одну выше, то есть вверх в скролбоксе. Расставлять так удобней было бы. и про масштабирование карты - это к основной программе относится, но я бы попробовал и тут применить.То есть или по кнопкам - увеличить, уменьшить, или колесом мыши. Спасибо.
0
|
|
|
Супер-модератор
|
|||||||
| 13.06.2015, 10:48 | |||||||
1
|
|||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 13.06.2015, 12:26 [ТС] | ||||||
|
Да, да, по этому вопросу то что надо.
Только проблема в том, что при клике на панельку, координаты Top уже расставленных тоже подымаются. Добавлено через 3 минуты Наверное какое то условие возможно добавить по месту нахождения панелек.. Добавлено через 1 час 16 минут Вот так работает.
0
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 13.06.2015, 19:37 [ТС] | |
|
Если поставить свойство формы AutoSize = 1, картинка карты сохраняется вся, независимо от того, насколько она вылезает за границы экрана. Нет ли тут подвоха?
И сохраняет как то иногда нормально, иногда с артефактами от панелей..
0
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 13.06.2015, 20:04 [ТС] | ||||||
Такое впечатление, что чего то не успевает..
0
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 14.06.2015, 09:43 [ТС] | ||||||
|
Вот так вроде работает. Видимо дает время на перенос панели вперед
0
|
||||||
|
Супер-модератор
|
||
| 14.06.2015, 12:29 | ||
|
Добавлено через 56 секунд Кстати, после внимательного просмотра кода, выяснилась утечка: GetDC есть, ReleaseDC отсутствует.
1
|
||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 14.06.2015, 12:42 [ТС] | |
|
0
|
|
|
Супер-модератор
|
|||||||
| 14.06.2015, 12:49 | |||||||
|
Куда ж подробнее: MSDN говорит:
1
|
|||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 14.06.2015, 16:14 [ТС] | |
|
Да, сколько разных нюансов.... Спасибо большое.
Задумался сейчас по поводу масштабирования.Вообще реально все это дело, если картинка очень большая - уменьшить до разумных пределов? Там потянутся пересчет координат панелек, изменение их размера и наверное куча всякого...Вообще это сложно, или есть способ, применимый к моей задаче, доступный для понимания..?
0
|
|
|
Супер-модератор
|
|
| 14.06.2015, 16:24 | |
|
Чем не устраивает описанный способ с пересчетом координат, изменением размера, и т.д.? Не так уж много работы.
Интереснее другое: насколько сильно будет масштабироваться карта? И что при максимально возможном коэффициенте масштабирования можно будет рассмотреть на маленьких картинках, если их тоже масштабировать)? Скажем, чтобы карту размером 4000 пикселей поместить целиком на экран 1920 px шириной, нужно будет размер маленьких панелек уменьшить до 25 пикселей. И что ты на них увидишь при этом? А если будет картинка 6000 пикселей? А если при этом еще разрешение экрана по горизонтали не 1920, а 1200, например?
0
|
|
| 14.06.2015, 16:24 | |
|
Помогаю со студенческими работами здесь
80
Как получить родительский каталог относительно указанного пути Копирование картинки из drawgrid в drawgrid Картинку из БД поместить в кнопку
Поместить картинку в центре виджета Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|