| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TScrollBox скроллирование |
| Автор: midiar 13.1.2006, 12:37 |
| Добрый день! У меня в TScrollBox вставлена картинка, при скроллировании мне нужно, что бы картинка перерисовывалась вся, а не только освободившееся место (остальная часть перерисовывается как канвас TScrollBox-а, а меня это не устраивает, так как я вывожу дополнительную информацию непосредственно на канвас). Подскажите как этого добиться. |
| Автор: Alexeis 13.1.2006, 13:05 | ||
В смысле TImage |
| Автор: midiar 13.1.2006, 13:08 |
| Нет, я пишу компонент и использую потомок TGraphicControl. |
| Автор: Alexeis 13.1.2006, 13:36 |
| А какими средствами осуществляется перересовка только освободившегося места |
| Автор: midiar 13.1.2006, 14:11 |
| В методе Paint наследника TGraphicControl вставленного в TScrollBox обновляется канвас TGraphicControl. Но это обновление отрисовывается только на вновь появившемся после скроллирования месте. Та часть канваса, которая осталась видимой, но сдвинулась остается без изменений. В итоге получается шлейф. |
| Автор: Alexeis 13.1.2006, 14:57 |
| Значит в обработчике OnPaint производится полная перерисовка всего изображения, а на самом деле на экране видно что перерисовалось не все а только кусочек. Правельно понял |
| Автор: midiar 13.1.2006, 15:04 | ||
Да
|
| Автор: Alexeis 13.1.2006, 15:16 |
| Подозрительное свойство ClientRect Можно попробовать заменить на более жесткий Rect(0,0,..) и посмотреть какие будут изменения. кстати изображение нарисованное BitBlt(Canvas.Handle,0,0,FBmp.Width,FBmp.Height,FBmp.Canvas.Handle,0,0,SRCCOPY); также перересовывается не полностью? Я вывел командой BitBlt(Canvas.Handle,0,0,FBmp.Width,FBmp.Height,FBmp.Canvas.Handle,0,0,SRCCOPY); на paintbox в TScrollBox в onPaint и все получается хорошо. |
| Автор: midiar 13.1.2006, 16:51 |
| Проблема с последующим рисованием на канвасе, без DrawPlots(FALSE, Canvas, ClientRect); все хорошо. А вывод DrawPlots(FALSE, Canvas, ClientRect); оставляет шлейф при скроллинге. |
| Автор: Alexeis 13.1.2006, 16:55 |
| Что это за функция DrawPlots ? - в helpe нет такой |
| Автор: midiar 13.1.2006, 16:56 |
| Это моя функция, выводит текст |
| Автор: Alexeis 13.1.2006, 17:14 |
| Так если дело в ней может стоит привести ее код |