|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|
Мышь в виде перекрестия на весь PaintBox (Image)27.01.2016, 16:12. Показов 6060. Ответов 58
Метки нет (Все метки)
Здравствуйте! Использую PaintBox, но можно поговорить и об Image, т.к. почти одно и тоже)
Задача в следующем: На своём PaintBox (далее PB) сверху (примерно 80% его высоты) у меня отведено под некий график, а в нижней части PB (20%) я вывожу другой график, который идейно связан с верхним. Т.е. каждая точка на нижнем графике "рассказывает" пользователю о состоянии соответствующей точки верхнего графика. Но зрительно проводить вертикаль между далеко отстоящими друг от друга графиками не всем пользователям позволит косоглазие ))) Поэтому возникла идея превратить мышь в вертикаль на всю картинку, которая будет точно показывать, какая точка нижнего графика соответствует какой точке верхнего. Ну, а горизонталь за компанию: значение оси Y показывать будет... хотя особой необходимости в ней нет... так что если от этого зависит решение, то горизонталью я готов пожертвовать ))) Можно использовать OnMouseMove и рисовать линии на PB. Но если перерисовывать всю картинку при каждом движении мышки на 1 пиксель - то PB нереально дёргается (как мониторы компьютеров, которые показывают по телевизору, только быстро), программа иногда вылетает, да и вообще, выглядит это не эстетично и ужасно... Возникла идея создавать новый огромный курсор мыши в виде креста (ведь он не связан графически с PB и своим перемещением зарисовывать изображение на нём не будет). А поскольку расстояния от перекрестия до границ PB всегда будут разными, то создавать этот курсор надо каждый раз новый в OnMouseMove, а не просто загрузить курсор из файла размером в три монитора ))). Может, кто-то знает, как это сделать? Или у кого-то будет оригинальное гениальное решение? Смысл в том, чтоб рисовать крест не на PB и не удалять его, восстанавливая изображение под ним, после того, как мышь ушла в другое место. Заранее, спасибо.
0
|
|
| 27.01.2016, 16:12 | |
|
Ответы с готовыми решениями:
58
Графические компоненты Image, Shape, Chart, PaintBox Image во весь экран |
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|||
| 28.01.2016, 17:05 [ТС] | |||
|
Друг предложил версию, что помогает в более новом билдере.. у меня 6-й..
0
|
|||
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
||
| 29.01.2016, 01:31 [ТС] | ||
|
0
|
||
|
|
|
| 29.01.2016, 01:35 | |
|
Так это TPainBox рисуется.
C TImage нужно иначе... на TImage я делал https://www.cyberforum.ru/blog... og621.html - и работало нормально (на там правда быдлокод, ибо писал давно и много эксперементировал) Нужно просто думать как прорисовывать так что бы с минимальной нагрузкой, и по меньше участок прорисовывать.
0
|
|
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
||
| 29.01.2016, 01:54 [ТС] | ||
|
думаете, СтрингГрид? Не-а! Имидж! тут ячейки можно разноцветными делать )))) а в СтрингГриде нельзя. А в Вашей проге чё ему дёргаться? Вы ж его не перерисовываете по ОнМаусМув. А у меня поток рисует и обновляет в реальном времени. А по ОнМаусМув комменты для каждой точки выводятся разные текстом на картинке.. хотя, как Вы там ярлыки по рабочему столу тягаете - не знаю... должно дёргаться... )))
0
|
||
|
|
|||
| 29.01.2016, 02:00 | |||
|
Добавлено через 1 минуту P.S Я тоже когда-то подобную ерунду для расписания делал.
0
|
|||
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|||
| 29.01.2016, 02:03 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|||||
| 29.01.2016, 12:54 [ТС] | |||||
|
Добавлено через 4 минуты Добавлено через 3 минуты Добавлено через 10 часов 29 минут
0
|
|||||
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|||
| 29.01.2016, 13:37 [ТС] | |||
|
0
|
|||
|
|
|||
| 29.01.2016, 14:00 | |||
|
Т.е. синхронизация сводит весь выигрыш от потока на нет. Добавлено через 1 минуту Как сделать "Старт", "Пауза", Стоп"?
0
|
|||
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
||||||||
| 29.01.2016, 14:27 [ТС] | ||||||||
0
|
||||||||
|
|
|||
| 29.01.2016, 15:20 | |||
|
а не синхронизация и падает именно по тому что ее нет... Стоит во время перерисовки из потока подергать,потаскать форму мышкой и приложение виснет и падает. Канва = Canvas Добавлено через 3 минуты
0
|
|||
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|
| 29.01.2016, 15:32 [ТС] | |
|
Ок. Это моя первая серьёзная программа с потоком, поэтому я в потоках не особо шарю. Вы выше сказали, что синхронизация сведёт на "нет" преимущество потока. Так могу ли я как-то избавиться и от зависания (как в таймере), и от вылетов (как в потоке)? Просто, смысл сейчас заморачиваться с синхронизацией, если результат будет как в таймере?
0
|
|
|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|||
| 29.01.2016, 16:19 [ТС] | |||
|
Добавлено через 26 минут
0
|
|||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 29.01.2016, 16:35 | |
|
Sleep() - это вообще круто!! (типа: лучше не применять). А таймер сам собой не остановится; может из-за этого не выходит (раз вы с этим компонентом еще не работали). Для однократного применения в его обработчике в конце нужно прописать Timer1->Enabled = false; - тогда остановится.
0
|
|
|
|
|
| 29.01.2016, 16:36 | |
|
Вечный цикл?
0
|
|
| 29.01.2016, 16:36 | |
|
Как сместить Canvas в PaintBox не смещая PaintBox?
Acronis True Image тоже весь жёсткий диск форматирует Вывести весь текст словами в виде количественного числительного
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|