Главная страница
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.02 c
6-12853
mmmh
2003-03-09 23:55
2003.05.05
Мастера подскажите как реализовать включение и выключение компов


7-12953
BPK
2003-02-17 23:00
2003.05.05
Как узнать состояние лотка CD-ROM?


1-12792
vidiv
2003-04-22 12:10
2003.05.05
Как вывести в канвас текст под углом?


1-12778
NewN
2003-04-22 08:19
2003.05.05
Окно поверх других окон.


11-12686
SPeller
2002-07-20 05:26
2003.05.05
Отрисовка компонентов в RunTime