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

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



Память: 0.46 MB
Время: 0.009 c
14-12944
Agent[007]
2003-04-17 13:53
2003.05.05
Function


8-12831
sergey2
2003-01-26 15:33
2003.05.05
Как


14-12924
klyonov
2003-04-18 08:12
2003.05.05
WS_EX_TRANSPARENT


1-12824
v.topalov
2003-04-22 19:29
2003.05.05
Обман программы


14-12936
slaj
2003-04-18 12:17
2003.05.05
Проблема закрытия доступа на ПК отдельного юзера в Win2000 при вк




   Наверх