Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.051 c
14-1117821779
sofs
2005-06-03 22:02
2005.06.29
прошу прощения!


1-1118058494
Aleksandr.
2005-06-06 15:48
2005.06.29
Что может быть причиной невыгрузки библиотеки?


1-1117510543
Сергей Ю.
2005-05-31 07:35
2005.06.29
Как отловить Error reading XXXXXXXX?


1-1117739454
Starcom
2005-06-02 23:10
2005.06.29
Руссификация InstallShield v 3.5


9-1111472911
raul
2005-03-22 09:28
2005.06.29
редактор MAP файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский