Вниз
Скачать: 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
4-1114259443
Леший
2005-04-23 16:30
2005.06.29
Прозрачная область на форме


14-1117710930
Andy BitOff
2005-06-02 15:15
2005.06.29
MakeCab.exe


3-1116841354
ass1
2005-05-23 13:42
2005.06.29
isc4.gdb


8-1110308590
New37th
2005-03-08 22:03
2005.06.29
Люди, хэлп ми плиз, спрайты!!!!


1-1118065199
Gashish
2005-06-06 17:39
2005.06.29
Перенос модели в из 3d max в Delphi




   Наверх