|
5 / 5 / 2
Регистрация: 29.08.2012
Сообщений: 46
|
|
Мышь в виде перекрестия на весь PaintBox (Image)27.01.2016, 16:12. Показов 5770. Ответов 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 | |
|
Помогаю со студенческими работами здесь
40
Как сместить Canvas в PaintBox не смещая PaintBox?
Acronis True Image тоже весь жёсткий диск форматирует Вывести весь текст словами в виде количественного числительного
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|