Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2009, 13:03   #1
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию Paintbox

Помогите разобраться в следуещем вопросе

Я содаю в форме Paintox на который пользователь помешает некоторые элементы (эти элементы потом рисуются в OnPAint для PainBox) проблема в следующем, когда Paint box становиться довольно большим (увелеичивается в зависимости от помещённых на него элементов) то из за процедцры Invalidate получается слишком заметное обновление

InvalidateRect(Paintbox.Hendel,@rec ,true) не катит т.к. Paintbox.HAndel это переменная типа HWD а нужна HWND и хотя ошибку строка не выдаёт, но и не переррисовывает.


Рисовать на Canvans самой формы тоже нельзя т.к. размеры Paintbox могут быть безграничны а вот размеры формы естетствынно за эран выйти не могут. Или можно ли как то увеличить размер формы, но так чтобы увеличились не высота - ширина а добавились полосы ScrollBar

Кстати если Delphi добавил их автоматически как можно узнавать их положение и регулировать?
lacost вне форума Ответить с цитированием
Старый 12.01.2009, 21:36   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
эти элементы потом рисуются в OnPAint для PainBox
Пускай рисуются, но не вызывайте вручную эту процедуру, пусть она будет для "аварийных" случаев типа сворачивания и т.п. Для "ваших" обновлений создайте процедуру с таким же кодом и вызывайте ее, только не вызывайте в ней Invalidate, просто рисуйте заново все что есть в пэйнтбоксе. А в Paint поместите ее вызов.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 13.01.2009, 15:49   #3
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию

Спасибо, очень хороший совет.

Ещё пара вопросов, можно ли получить позицию ползунка если Delphi добавил его в окно автоматически т.к Paintbox.Width больше чем Width окна.

И при перетаскивании этого самого ползунка снова всё очень сильно тормозит из за постоянной пересовки огромного PaintBox почемуто он перересовывает именно весь Paintbox и даже те его части которые не видны, видимо потому что не может перерисовать только одну назначенную область в Painbox. Как бороться с такой проблемой? Может вместо одного громадного динамически добовлять несколько меньших?
lacost вне форума Ответить с цитированием
Старый 14.01.2009, 09:53   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Ещё пара вопросов, можно ли получить позицию ползунка если Delphi добавил его в окно автоматически т.к Paintbox.Width больше чем Width окна.
Их скорее не Дельфи а Винда добавляет. Теоретически думаю можно. На практике думаю лучше найти способ полегче.

Цитата:
И при перетаскивании этого самого ползунка снова всё очень сильно тормозит из за постоянной пересовки огромного PaintBox почемуто он перересовывает именно весь Paintbox и даже те его части которые не видны, видимо потому что не может перерисовать только одну назначенную область в Painbox. Как бороться с такой проблемой? Может вместо одного громадного динамически добовлять несколько меньших?
Как можно перерисовывать то что не видно? Могу вас заверить перерисовывается только видимая часть. Тормоза из за других действий, вам лучше знать, что там у вас происходит, но не из за вывода на экран. Бороться можно по разному. Трудно сказать не зная задачи. В общем нужно частично отказываться от стандартных средств прокрутки, возможно оптимизировать содержимое пэйнтбокса.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подлый PaintBox Fre5h Компоненты Delphi 2 09.11.2008 22:52
bmp и paintbox, использование шрифта? PONKA Общие вопросы Delphi 10 14.05.2008 16:47
paintbox steck Общие вопросы Delphi 5 28.10.2007 16:15
Помогите с рисованием на Delphi, компонент paintbox Jose Общие вопросы Delphi 10 01.02.2007 14:18