Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2008, 23:32   #1
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию Масштабирование картинки без GDI+

Возникла такая проблема - нужно изменить размер картинки, например 1024х768 надо изменить на 128х120 как это сделать для форматов *.bmp, *.jpg, *.gif без помощи GDI+ или кто-то может подсказать почему GDI+ не работает под WinXP? где то в инете написано XP на GDI+ где-то(на сайти микрософта, что его там нет). Не хочется утяжелять программу более чем на полтора метра...
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 28.07.2008, 00:22   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Начнем с того, что картинка должна быть предварительно загружена в некоторый BitMap (на этом я не буду останавливаться подробно).
Теперь достаточно создать новый битмап нужного нам размера и перекинуть туда картинку, например, так:
Код:
var BitMap1, BitMap2: TBitMap; // наши битмапы
begin
  BitMap1 := TBitMap.Create; // создаю первый битмап
  BitMap1.LoadFromFile ('bitmap1.bmp'); // загружаю в формате .bmp
  // ! можно загружать и в формате .jpg, но это немного сложнее
  // ! на счет формата .gif не уверен, стандартными средствами, думаю, нельзя
  // для него нужны сторонние модули или компоненты
  BitMap2 := TBitMap.Create; // создаю второй битмап
  BitMap2.Width := 128; // его ширина
  BitMap2.Height := 120; // его высота
  BitMap2.Canvas.StretchDraw (Rect (0, 0, 128, 120), BitMap1); // а это и есть копирование с масштабированием
  BitMap2.SaveToFile ('bitmap2.bmp'); // сохраняю результат в файл
  BitMap2.Free; // очищаю память от битмапа
  BitMap1.Free; // очищаю память от загруженного битмапа
end;
Arigato вне форума Ответить с цитированием
Старый 28.07.2008, 09:54   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

С jpg точно также, только переменные другого типа
Код:
Uses
  ... JPEG;
var
  BMP : TBitmap;
  JPG : TJPEGImage;
begin
  BMP := TBitmap.Create;
  JPG := TJPEGImage.Create;
  JPG.LoadFromFile('0.jpg');
  BMP.width := 128;
  BMP.height := 120;
  BMP.Canvas.StretchDraw (Rect (0, 0, 128, 120), JPG);
  BMP.SaveToFile('0.bmp');
  BMP.free;
  JPG.free
end;

Последний раз редактировалось eoln; 28.07.2008 в 09:58. Причина: Строчка лишняя
eoln вне форума Ответить с цитированием
Старый 28.07.2008, 10:08   #4
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Вот проблема как быть с *.gif и еще вопросик... как заставить GDI+ рабоать под XP
Страх это слабость и потому, кто испугался уже побежден.

Последний раз редактировалось Mixasik; 28.07.2008 в 10:23.
Mixasik вне форума Ответить с цитированием
Старый 28.07.2008, 17:47   #5
Банзай
Пользователь
 
Аватар для Банзай
 
Регистрация: 21.08.2007
Сообщений: 89
По умолчанию

вообще GDIplus.dll - стандартная библиотека виндоус ХП, возможно в хом версии её может не быть (хотя должна быть). чтоб пользоваться этой библиотекой независимо от платформы её нужно скопировать в корневой каталог программы, или в какой ни будь из путей системы (windows\ или windows\system32\) также, как вариант можно добавить свой путь в переменные среды. Саму библиотеку можно найти в гугле. при надобности там же можно найти шапки с описанием.
подписываюсь

Последний раз редактировалось Банзай; 28.07.2008 в 17:49.
Банзай вне форума Ответить с цитированием
Старый 28.07.2008, 20:09   #6
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Mixasik, посмотри это
Вложения
Тип файла: zip gdi_plus_api.zip (256.9 Кб, 42 просмотров)
Ring0Sn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
масштабирование изображения Alex_Pro Общие вопросы .NET 0 25.05.2008 09:09
масштабирование Alex_Pro Общие вопросы .NET 0 21.05.2008 18:21
масштабирование lenivec Общие вопросы Delphi 1 23.02.2008 07:07
масштабирование картинки ZhekON Мультимедиа в Delphi 6 16.06.2007 17:00
Масштабирование Формы SERG1980 Общие вопросы Delphi 1 28.03.2007 12:28