|
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 46
|
|
Рисование на bmp28.09.2014, 21:57. Показов 3086. Ответов 32
Метки нет (Все метки)
Здравствуйте! Есть объект типа TGraphicControl, который нужно будет вывести на экран.
У него перегружаю метод Paint. Внутри неё рисую(с учетом всех свойств объекта ведутся расчеты) на bmp который объявлен внутри paint, затем тут же вывожу на экран Canvas.Draw(0,0,BMP). Когда меняется значение любого из свойств вызываю invalidate. В итоге когда двигаю за scrollbar картинка хорошенько мерцает. Как я понял когда двигаю этот самый scrollbar вызывается Paint И каждый раз он все это дело пересчитывает. Хотя достаточно было бы просто выводить нарисованный BMP на экран. Вопрос: Как это реализовать? PS/Извиняюсь что только на словах без примера. Код слишком большой, никто не захочет в него вникать, а выбросить из него нечего.
0
|
|
| 28.09.2014, 21:57 | |
|
Ответы с готовыми решениями:
32
Конвертер BMP 32 bit BGRA в BMP 8 bit c Palette Рисование BMP файла на QImage
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 29.09.2014, 16:45 | ||
Сообщение было отмечено Radiance72 как решение
РешениеВзведение флага - при изменении любого из параметров расчетов, например, изменение размеров графконтрола или изменение каких-то объектов, рендеринг растровых образов которых происходит при построении результирующей сцены на канве графконтрола. Факт же начала или окончания скроллинга к изменениям параметров расчетов отношения не имеет, ибо отрисовка выполняется не на канву скроллбокса.
1
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.09.2014, 16:45 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 46
|
||
| 29.09.2014, 16:57 [ТС] | ||
|
Использовать Timage не вариант, много заморочек, поздняк метаться как говорится.
Одна проблема: Точнее в какие события их воткнуть?
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.09.2014, 17:02 | |
|
Это с имейджем то заморочки? Он же прост до безобразия.
0
|
|
|
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 46
|
|
| 29.09.2014, 17:17 [ТС] | |
|
Не это с TGraphicControl проблема,для Timage перерисовывать много
Добавлено через 2 минуты переписывать, уже заговариваюсь)
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
| 29.09.2014, 17:18 | |
|
Имидж принципиально отличается от графконтрола только наличием встроенного того самого буферного битмапа.
Если рассматривать имидж vs графконтрол только в этой плоскости, то применение имиджа в целом и общем может быть оправдано.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 29.09.2014, 17:21 | ||
|
Так, всё ясно. Заморочек полно сейчас. На столько, что
1
|
||
|
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 46
|
|
| 29.09.2014, 17:28 [ТС] | |
|
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 29.09.2014, 17:52 | ||
|
Битмап он и в Африке остается битмапом, разница лишь в том, что при получении PAINT-сообщения графконтрол-имдж будет пытаться самостоятельно (т.е. без явного ручного вмешательства) отрисовать на своей канве то что лежит во встроенном битмапе, в то время как при использовании своего наследника графконтрола нужно ручками перекрывать виртуальный Paint и ручками же что-то там рисовать на канве, например, копировать туда канву своего буферного битмапа.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 29.09.2014, 20:38 | ||
|
Добавлено через 21 минуту Имэйдж не надо перерисовывать при каждом инвалидейте, достаточно или один раз нарисовать, или перерисовывать только при изменении самого изображения, а соответственно не надо мучиться с событиями и мудрить движение битмапа, он уже качественно икапсулирует перерисовку. Если же всё таки возникнет необходимость стирать имейдж, то чтоб не мигал достаточно рисовать во внеэкранном битмапе по размерам имейджа, а потом готовый битмап класть на имейдж. При многократном выводе одного и того же и при выводе готового буферного битмапа со сдвинутым изображением на кэнвэс он не мигает. Я на нём делал через буферный битмап симулятор самописца, как бы ни дёргались кривые, мигания не было ни при обновлении с частотой таймера, ни даже при перерисовке из несинхронизированного вторичного потока. Добавлено через 1 час 30 минут И уж подавно не было миганий при ручном скролировании.
0
|
||
|
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 46
|
||||||
| 01.10.2014, 21:20 [ТС] | ||||||
|
Попробовал через флаги, стало куда лучше, но картинка всеравно немного мерцает, причем чем больше таких объектов тем сильнее.
Решил попробовать через TImage, однако тупик. Вот код, который не хочет ничего рисовать. В чем проблема?
Прошу прощения, все, Разобрался) Добавлено через 15 секунд Прошу прощения, все, Разобрался)
0
|
||||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 02.10.2014, 14:23 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 46
|
|
| 02.10.2014, 14:26 [ТС] | |
|
Посмотри пожалуйста Мелькание картинки при скролле
0
|
|
| 02.10.2014, 14:26 | |
|
Рисование BMP изображения 16 bit/pixel Работа с BMP-файлами (класс "8 битное BMP изображение) Создание монохромного bmp из одной из 24-х плоскостей 24-битного bmp Изображение bmp, операция над ним, снова в bmp Рисование Рисование точек по координатам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|