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

Вниз

Отображение картинки с возможностью скролла   Найти похожие ветки 

 
Сергей   (2003-01-24 21:23) [0]

Есть относительно большая картинка (для определенности 2000x1000)
Надо показывать ее в окошке 500x500, причем я хочу чтобы при нажатии мышкой в любую точку картинку можно было тащить. Ммм.. ну как это сделано в Photoshop, acdsee.. То есть при попытке "перетаскивания" картинки происходит ее скролл. Сейчас я делаю так: засовываю Timage в фрейм и вручную двигаю скроллбары фрейма. Выглядит ужасно. Все почему-то трясется. Как это сделать правильно? Помимо того, нужно чтобы можно быть делать zoom, т.е. изменять размер картинки. Помогите.


 
Mihey   (2003-01-24 22:34) [1]

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


 
Сергей   (2003-01-24 23:56) [2]

Пытался только что это сделать. Как? Конкретно - как в TImage засунуть этот вырезанный кусок, а точнее в чем этот кусок хранить? Короче - какие компоненты я должен использовать на всех этапах выделения этого кусочка? И каким методом его отображать?


 
xn0bys ©   (2003-01-28 08:45) [3]

Сергей, А скроллбокс на что?
там ничего не трясётся... IMHO

Я сам так делаю, а зум делаю так:

procedure Zoom(MagnifyFactor:Single);
begin
Image.AutoSize:=False;
Image.Stretch:=True;
Image.Width:=Round(Image.Picture.Bitmap.Width*MagnifyFactor);
Image.Height:=Round(Image.Picture.Bitmap.Height*MagnifyFactor);
end;

Таскание можно сделать так:

procedure ImageOnMouseDown(.....);
begin
Oldx:=X;
Oldy:=Y;
OldLeft:=Image.Left;
OldTop:=Image.Top;
Down:=True;
end;

procedure ImageOnMouseMove(.....);
begin
If Down then
begin
Image.Left:=OldLeft+(X-OldX);
Image.Top:=OldTop+(Y-OldY);
Oldx:=X;
Oldy:=Y;
end;
end;

procedure ImageOnMouseUp(...);
begin
Down:=False;
end;

Ну или что-то подобное...


 
Kyro5   (2003-01-28 12:30) [4]

http://www.g32.org/graphics32/

зум и скрол можно сделать поразному.
но вот по этой ссылке лежит короший набор компонентов.
там все сделано ну или почти все, но доделывать не долго


 
bigcrush ©   (2003-01-28 15:17) [5]

А если картинка 10000x10000.
Это ж сколько памяти нужно :-o да и времени на загрузку.
Как сделать, чтобы всю картинку не грузить в память?



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
4-12969
Nick Denry
2003-03-06 14:11
2003.05.05
Combobox на Api


14-12867
SammIk
2003-04-16 16:41
2003.05.05
Работа с указателями


7-12946
Ghost_
2003-03-12 09:04
2003.05.05
Очередной вопрос по выключению компьютера..


14-12864
malkolinge
2003-04-16 17:28
2003.05.05
А я иду завтра на Борланджовскую конференцию!


1-12735
Nikos
2003-04-22 19:11
2003.05.05
Как восстановить текст, который был в поле Memo?