Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Image со ScrollBar ами   Найти похожие ветки 

 
lockheed_man ©   (2006-05-21 00:15) [0]

Доброго времени суток. Ув. Мастера не подскажите ли как организовать прокрутку изображения когда оно не влазит в свои рамки или рамки контейнера. Заранее спасибо.


 
Efir   (2006-05-21 13:19) [1]

Можно поступить так. Допустим, нужно вывести на форму Bitmap, который
не умещается. Объясню прокрутку только для оси Х, так как для Y  аналогично.
Располагаем на форме ScrollBar со свойством Allign:=alBottom (для оси Х).
При выводе Bitmap"а проверяем, умещется ли он по ширине на форме, а так как у наc SrollBar.Width равен ширине окна вывода изображения, то проверяем по нему:

if Bitmap.Width>ScrollBar.Width then ...

усли не умещается то рассчитывае значение ScrollBar.Max:

ScrollBar.Max:=Bitmap.Width>ScrollBar.Width;

иначе ScrollBar.Max:=0;

А дальше в событии ScrollChange пишем:

Form.Canvas.Draw(-ScrollBar.Position, 0,  Bitmap);


 
homm ©   (2006-05-21 15:17) [2]


>  [1] Efir   (21.05.06 13:19)

А просто TImage поместить в TScrollBox, придав ему значение AutoSize := TRUE чем не способ?


 
Efir   (2006-05-21 15:51) [3]

Из-за перерисосовки TImage будут появляться артефакты по краям при скролле. Лучше обходиться вообще без TImage при работе с графикой.


 
lockheed_man ©   (2006-05-22 03:04) [4]

Ну дело вообщето в том что я не про картинку как битмап имел в виду. Просто мне нужно нарисовать схему, размеры которой могут превышать границы контейнера. Вот как организовать такую прокрутку?


 
homm ©   (2006-05-22 23:10) [5]


>  Просто мне нужно нарисовать схему, размеры которой могут
> превышать границы контейнера.

В чем проблема, не пойму. Между построением изображениея будет какй-то момент времени. Именно в этот момент и будет известны размеры. Нужно их и задать как размеры имэйджа.


> Из-за перерисосовки TImage будут появляться артефакты по
> краям при скролле
Артефакты AFAIK другое. Есть двойная буферизация для контролов. Поищите по ключевым словам "WM_PAINT WM_ERASEBKGND homm Игорь Шевченко" в разделе API.


> Лучше обходиться вообще без TImage при работе с графикой.
Для каждого случая лучше выбирать средства индивидуально.


 
lockheed_man ©   (2006-05-23 17:51) [6]


> Между построением изображениея будет какй-то момент времени.
>  Именно в этот момент и будет известны размеры.

Да, это конечно же вариант. Но если размер схемы будет превышать размеры экрана, тогда что? Ведь TImage не нарисует скролбары сам (хотя я это вариант не проверял)?



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.057 c
2-1166721659
Tort
2006-12-21 20:20
2007.01.14
Работа с реестром


1-1163952134
Calibr
2006-11-19 19:02
2007.01.14
Ассоциирование файла с программой


2-1166798943
КВАНТ
2006-12-22 17:49
2007.01.14
Про шрифты Windows XP


15-1165935162
Гарри Поттер
2006-12-12 17:52
2007.01.14
Монтаж локальной сети. Склько может стоить?


2-1167047144
smaller
2006-12-25 14:45
2007.01.14
начинающий, работа со звуком