Форум: "Media";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизПоложение 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 вся ветка
Форум: "Media";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.119 c