Главная страница
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.053 c
2-1167038007
TCrash
2006-12-25 12:13
2007.01.14
Ошибка :(


15-1166793815
ANTPro
2006-12-22 16:23
2007.01.14
Книга по IDE VS2005


2-1166959976
Jeeb
2006-12-24 14:32
2007.01.14
Добавление записи в БД


6-1155824261
diamo
2006-08-17 18:17
2007.01.14
Многозвенное приложение, IAppSerever: нужна помощь профессионала


2-1166697948
VitV
2006-12-21 13:45
2007.01.14
Проблема с процедурой