Главная страница
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.011 c
1-12763
Carmen
2003-04-22 08:02
2003.05.05
Как полностью изменить внешний вид DBLookupComboBox


1-12760
10-0-
2003-04-22 00:07
2003.05.05
Интересная проблема с Richedit


1-12772
Зинец Виктор
2003-04-22 10:06
2003.05.05
Q: как при запуске сделать главную форму невидимой?


14-12877
paranoid
2003-04-16 22:16
2003.05.05
Как спрятать свою программу!


11-12677
Alexei Dragoner
2002-07-19 19:53
2003.05.05
Как быть с Timer ом?