Вниз
Скачать: 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.035 c
15-1166837523
ЕгерьИ
2006-12-23 04:32
2007.01.14
Где в подмосковье купить ёлку ?


2-1167082382
Delphi4aynik
2006-12-26 00:33
2007.01.14
Combobox


2-1166430158
Любитель
2006-12-18 11:22
2007.01.14
Как можно показать n кнопок на панеле


15-1166879717
ыгыгыгыгы
2006-12-23 16:15
2007.01.14
плинтус


15-1165762396
Real
2006-12-10 17:53
2007.01.14
Гонщик серебряной мечты - скачать, купить, заказать...




   Наверх