Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
2-1166887149
BanserAnt
2006-12-23 18:19
2007.01.14
Кто находится в чате?


15-1166861867
Parus
2006-12-23 11:17
2007.01.14
RESULT от WINEXEC


15-1166856820
Оззя
2006-12-23 09:53
2007.01.14
К тов. Подгорецкому на сайт попасть


15-1166870909
Parus
2006-12-23 13:48
2007.01.14
Впервые на экране.


15-1167067714
vasIZmax
2006-12-25 20:28
2007.01.14
Мнение




   Наверх