|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
Поместить картинку в DrawGrid из указанного пути26.05.2015, 15:04. Показов 6699. Ответов 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 | |
|
Как получить родительский каталог относительно указанного пути Копирование картинки из drawgrid в drawgrid Картинку из БД поместить в кнопку
Поместить картинку в центре виджета Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты 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) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|