Вниз
Скачать: CL | DM;

Положение TImage в Scrollbox`е   Найти похожие ветки 

 
romantic ©   (2005-03-06 12:28) [0]

Доброго времени суток! Недавно столкнулся с проблемой следующего характера: На форме есть Scrollbox в который помещены 2 TImage, в первый TImage загружается бмп-шка через опэндиалог. Во втором я прорисовываю первый TImage но уже с учетом масштабирования (умножаю размеры картинки на масштаб, а затем через image1.Canvas.StretchDraw(rect,image1.Picture.Bitmap)). Потолковые значения скроллбаров устанавливаю так:
scrollbox1.VertScrollBar.Range:=rect.Bottom;
scrollbox1.HorzScrollBar.Range:=rect.Right;
А теперь, собственно, проблема - пытаюсь сделать так, чтобы после изменения масштаба не изменилось положение центра изображения относительно границ скроллбокса(т.е. если в центре был какой-то объект, то он должен так и остаться в центре, но уже отмасштабированным). Пытался отслеживать положения скроллбаров и "масштабировать" их, но изображение смещается так как максимальное значение VertScrollBar.Position не соответствует значению VertScrollBar.Range Та же история и с горизонтальным скроллбаром...
Научите. Заранее благодарен!


 
romantic ©   (2005-03-07 15:12) [1]

Неужели никто не поможет?
Или слишком подробно все описал?


 
**BEN**   (2005-03-07 16:44) [2]

не мужик тебе никто не поможет, здесь все слижком умные для нас, блин...


 
Fenik   (2005-03-07 17:22) [3]

Запоминаешь координаты точки в центре видимой части перед масштабированием. После изменения масштаба простой расчет положения ползунков, чтобы эта точка снова оказалась в центре... Ну, неужели так трудно? Надо лишь маленько напрячь мозгу. :)


 
Fenik   (2005-03-07 17:33) [4]

> romantic ©  (06.03.05 12:28)
> Пытался отслеживать положения скроллбаров и "масштабировать" их, но изображение смещается так как максимальное значение VertScrollBar.Position не соответствует значению VertScrollBar.Range Та же история и с горизонтальным скроллбаром...


Так ведь Range нужно устанавливать динамически, т.е. после каждого изменения масштаба:
with ScrollBox1 do begin
 VertScrollBar.Range := Rect.Bottom * FScale;
 HorzScrollBar.Range := Rect.Right * FScale;
end;



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

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



Память: 0.46 MB
Время: 0.025 c
1-1117786816
User1
2005-06-03 12:20
2005.06.29
Зашищаем данные в потоках


1-1118307165
KostR
2005-06-09 12:52
2005.06.29
По подробней, пожалуйста, объясните про открытие word кого файла.


1-1118226809
Руслан
2005-06-08 14:33
2005.06.29
обновить DBGrid


3-1116317348
_RusLAN
2005-05-17 12:09
2005.06.29
DBASE IV. Не работает поиск с буквой "і".


3-1116574168
Hereticsoul
2005-05-20 11:29
2005.06.29
Sqlite+Delphi




   Наверх