Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.064 c
1-1117706901
Serg1981
2005-06-02 14:08
2005.06.29
Динамическое создание формы


14-1117508878
Mike Kouzmine
2005-05-31 07:07
2005.06.29
Такая Европа нам не нужна!


14-1117647846
gn
2005-06-01 21:44
2005.06.29
Раскрыта одна из крупнейших сетей кибершпионажа


1-1117668334
iskatel
2005-06-02 03:25
2005.06.29
resume.xlw млин...


14-1117610965
Skier
2005-06-01 11:29
2005.06.29
Построение буферной зоны.