|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Масштабирование изображения
Здравствуйте.
Может есть у кого исходники программки, которая бы загружала любое изображение (формата BMP например) и позволяла масштабировать его. То есть, надо всего 3 кнопки: "+" - для увеличения фрагмента изображения, "-" - для уменьшения и "Полный размер" - чтобы вся картинка видна была. |
#2
|
|||
|
|||
Brute Force
Юзай TImage. Только stretch включить не забудь. |
#3
|
|||
|
|||
а в GDI+ есть какаянить одна функция масштабирования? мне тож надо)
Последний раз редактировалось Гудвин, 21.03.2008 в 22:00. |
#4
|
|||
|
|||
Цитата:
|
#5
|
|||
|
|||
Вот, например, есть на форме TImage размером 100х100, в него картинка грузится 500х500 и Stretch=True. При клике на картинку надо, не меняя размеров TImage, показать ее в реальном разрешении, чтобы место клика на катртинке совпадало с центром TImage (по краям она, понятно, обрежется). Может кто-нибудь такой код привести?
|
#6
|
||||
|
||||
Свойство Center
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#7
|
|||
|
|||
Да, я только не понял, как мне в этот Center указанную точку изображения привести?
|
#8
|
|||
|
|||
Brute Force И не стыдно тебе такие глупые вопросы задавать. Ну, уж напряги свой мозг, подумай как прямоугольник отцентрировать(зная его высоту, ширину и координаты верхнего левого угла).
|
#9
|
|||
|
|||
Цитата:
Вобщем это выглядит примерно так : procedure TForm1.Button1Click(Sender: TObject); begin BitMap1 := TBitMap.Create; try BitMap1.LoadFromFile('C:\1.bmp'); // здесь указывай свой ...\*.bmp Canvas.Draw(0,0,BitMap1); BitMap1.Height:= form1.Height; BitMap1.Width:= form1.Width; finally BitMap1.Free; end; |
#10
|
|||
|
|||
Цитата:
В общем это выглядит примерно так : procedure TForm1.Button1Click(Sender: TObject); var BitMap1 : TBitMap; begin BitMap1 := TBitMap.Create; try BitMap1.LoadFromFile('C:\1.bmp'); // здесь указывай свой ...\*.bmp Canvas.Draw(0,0,BitMap1); BitMap1.Height:= form1.Height; BitMap1.Width:= form1.Width; finally BitMap1.Free; end; Последний раз редактировалось Smirnov Ivan, 24.03.2008 в 00:18. |
#11
|
|||
|
|||
Smirnov Ivan
Цитата:
Ты не в теме, дай челу подумать. |
#12
|
|||
|
|||
Цитата:
Сам ты мозг! До сих пор ни строчки кода не привел, только ругаешься на всех! |
#13
|
|||
|
|||
Пока придумалось только делать невизуальный компонент TBitmap в полный размер картинки и копировать с него на TImage разные части изображения в зависимости от координат TImage, куда пользователь нажал и от того увеличить надо масштаб или уменьшить.
Вот если бы кто теперь написал пример функции, которая может из TBitmap скопировать в TImage прямоугольник с размерами TImage... |
#14
|
|||
|
|||
у имэйджа свойство стретч / центр в тру а VertScrollBar.Visible / HorzScrollBar.Visible в фэлсэ а потом свойствами left top width height манипулируешь, мож к примеру им значение меньше нуля присвоить, вдруг получицо? эт самый простой способ. а для разнообразия можно переменную булевую завести и при перемещении мыши когда левая клавиша зажата, перемещать и картинку чтоб эффект как в просмотре изображений получить.
если же копировать рект из битмапа то это функцией canvas.CopyRect Последний раз редактировалось Гудвин, 25.03.2008 в 02:45. |
#15
|
|||
|
|||
Цитата:
Ты думаешь, ты самый умный? Если так, то почему сам не поможешь? Или есть проблемы? //Это форум для начинающих и тех кто хочет им помочь, а не для начинающих и тех кто хочет над ними посмеяться ------------------------------------ Да, я ошибся( {спешил} BitMap1.Height:=form1.Height; BitMap1.Width:=form1.Width; Вот исправленный вариант: form1.Height:=BitMap1.Height; form1.Width:=BitMap1.Width; |