Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.03.2008, 17:14
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию Масштабирование изображения

Здравствуйте.
Может есть у кого исходники программки, которая бы загружала любое изображение (формата BMP например) и позволяла масштабировать его. То есть, надо всего 3 кнопки: "+" - для увеличения фрагмента изображения, "-" - для уменьшения и "Полный размер" - чтобы вся картинка видна была.
Ответить с цитированием
  #2  
Старый 21.03.2008, 19:52
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Brute Force
Юзай TImage. Только stretch включить не забудь.
Ответить с цитированием
  #3  
Старый 21.03.2008, 21:55
Гудвин Гудвин вне форума
Прохожий
 
Регистрация: 18.03.2008
Сообщения: 24
Репутация: 10
По умолчанию

а в GDI+ есть какаянить одна функция масштабирования? мне тож надо)

Последний раз редактировалось Гудвин, 21.03.2008 в 22:00.
Ответить с цитированием
  #4  
Старый 22.03.2008, 10:23
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Adler
Brute Force
Юзай TImage. Только stretch включить не забудь.
Вопрос в том, как именно юзать TImage, чтобы нужного результата добиться. А про Stretch я уже читал где-то здесь.
Ответить с цитированием
  #5  
Старый 22.03.2008, 10:30
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

Вот, например, есть на форме TImage размером 100х100, в него картинка грузится 500х500 и Stretch=True. При клике на картинку надо, не меняя размеров TImage, показать ее в реальном разрешении, чтобы место клика на катртинке совпадало с центром TImage (по краям она, понятно, обрежется). Может кто-нибудь такой код привести?
Ответить с цитированием
  #6  
Старый 22.03.2008, 10:42
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Свойство Center
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #7  
Старый 23.03.2008, 17:37
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

Да, я только не понял, как мне в этот Center указанную точку изображения привести?
Ответить с цитированием
  #8  
Старый 23.03.2008, 21:01
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Brute Force И не стыдно тебе такие глупые вопросы задавать. Ну, уж напряги свой мозг, подумай как прямоугольник отцентрировать(зная его высоту, ширину и координаты верхнего левого угла).
Ответить с цитированием
  #9  
Старый 24.03.2008, 00:15
Smirnov Ivan Smirnov Ivan вне форума
Прохожий
 
Регистрация: 26.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Adler
Brute Force И не стыдно тебе такие глупые вопросы задавать. Ну, уж напряги свой мозг, подумай как прямоугольник отцентрировать(зная его высоту, ширину и координаты верхнего левого угла).

Вобщем это выглядит примерно так :

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  
Старый 24.03.2008, 00:16
Smirnov Ivan Smirnov Ivan вне форума
Прохожий
 
Регистрация: 26.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Adler
Brute Force И не стыдно тебе такие глупые вопросы задавать. Ну, уж напряги свой мозг, подумай как прямоугольник отцентрировать(зная его высоту, ширину и координаты верхнего левого угла).

В общем это выглядит примерно так :

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  
Старый 24.03.2008, 01:55
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Smirnov Ivan
Цитата:
В общем это выглядит примерно так :
о_О мда, да ты мозГ. А выглядит всё равно не так
Ты не в теме, дай челу подумать.
Ответить с цитированием
  #12  
Старый 24.03.2008, 21:27
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Adler
Smirnov Ivan

о_О мда, да ты мозГ. А выглядит всё равно не так
Ты не в теме, дай челу подумать.

Сам ты мозг! До сих пор ни строчки кода не привел, только ругаешься на всех!
Ответить с цитированием
  #13  
Старый 24.03.2008, 21:33
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

Пока придумалось только делать невизуальный компонент TBitmap в полный размер картинки и копировать с него на TImage разные части изображения в зависимости от координат TImage, куда пользователь нажал и от того увеличить надо масштаб или уменьшить.

Вот если бы кто теперь написал пример функции, которая может из TBitmap скопировать в TImage прямоугольник с размерами TImage...
Ответить с цитированием
  #14  
Старый 25.03.2008, 02:37
Гудвин Гудвин вне форума
Прохожий
 
Регистрация: 18.03.2008
Сообщения: 24
Репутация: 10
По умолчанию

у имэйджа свойство стретч / центр в тру а VertScrollBar.Visible / HorzScrollBar.Visible в фэлсэ а потом свойствами left top width height манипулируешь, мож к примеру им значение меньше нуля присвоить, вдруг получицо? эт самый простой способ. а для разнообразия можно переменную булевую завести и при перемещении мыши когда левая клавиша зажата, перемещать и картинку чтоб эффект как в просмотре изображений получить.
если же копировать рект из битмапа то это функцией canvas.CopyRect

Последний раз редактировалось Гудвин, 25.03.2008 в 02:45.
Ответить с цитированием
  #15  
Старый 25.03.2008, 15:41
Smirnov Ivan Smirnov Ivan вне форума
Прохожий
 
Регистрация: 26.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Adler
Smirnov Ivan

о_О мда, да ты мозГ. А выглядит всё равно не так
Ты не в теме, дай челу подумать.

Ты думаешь, ты самый умный? Если так, то почему сам не поможешь?
Или есть проблемы?
//Это форум для начинающих и тех кто хочет им помочь, а не для начинающих и тех кто хочет над ними посмеяться

------------------------------------

Да, я ошибся( {спешил}

BitMap1.Height:=form1.Height;
BitMap1.Width:=form1.Width;

Вот исправленный вариант:

form1.Height:=BitMap1.Height;
form1.Width:=BitMap1.Width;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter