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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 15:07   #1
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию формат Image

Здравствуйте.

На форме обитают объекты типа Timage, которые имеют габариты 100x100. Когда подгружаю в них картинки, к примеру 1024x768, то нужно урезать этот формат до 100x100.
Промежуточный алгоритм выглядит так:
Код:
procedure MyForm.click;
var
  img: TImage;
begin
  if(op.Execute) then // openpicture диалог
  begin
    img := Timage.Create(Self);
    img.Width := 100;
    img.Height := 100;
    img.AutoSize := false;
    img.Stretch := false;
    img.Picture.LoadFromFile(op.FileName);

    bmp_in := TBitMap.Create;
    bmp_in.Width := img.Width;
    bmp_in.Height := img.Height;
    bmp_in.Canvas.StretchDraw(img.Canvas.ClipRect, img.Picture.Graphic);
    res_img.Picture.Bitmap := bmp_in;
  end;
end;
закидываю область отсечения канвы в res_img (один из множества объектов на форме).
Есть ли другой вариант реализовать данную задачу?
Заранее спасибо.
Unique_Maks вне форума Ответить с цитированием
Старый 15.10.2013, 15:26   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure MyForm.click;
var Bitmap: TBitmap;
begin
  if(op.Execute) then // openpicture диалог
  begin
    Bitmap:=TBitmap.Create;
    Bitmap.LoadFromFile(op.FileName);
    res_img.Canvas.StretchDraw(Image1.Canvas.ClipRect,Bitmap);
    Bitmap.Free;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.10.2013, 16:16   #3
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
procedure MyForm.click;
var Bitmap: TBitmap;
begin
  if(op.Execute) then // openpicture диалог
  begin
    Bitmap:=TBitmap.Create;
    Bitmap.LoadFromFile(op.FileName);
    res_img.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Bitmap);
    Bitmap.Free;
  end;
end;
в данном случае берется кусок от оригинала...и в моем тоже.
Надо что бы формат 1024x768 превратился в 100x100 (типо Stretch).
Битовая матрица не была такой здоровой.
Про другие расширения пока умолкаю...
Unique_Maks вне форума Ответить с цитированием
Старый 15.10.2013, 16:53   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
Так не надо
res_img.Canvas.StretchDraw(Bitmap.Canvas.ClipRect,Bitmap);

надо так, у меня там описка была
res_img.Canvas.StretchDraw(res_img.Canvas.ClipRect,Bitmap);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.10.2013, 08:48   #5
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

указал габариты res_img и отобразилось нормально. Без них ничего не выводится.
Даже если указываю результирующую область как Image_на_форме.canvas.ClipRect, то тоже не отображается

Последний раз редактировалось Unique_Maks; 16.10.2013 в 08:50.
Unique_Maks вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАК ПЕРЕДЕЛАТЬ ФОРМАТ mp4 В ФОРМАТ 3gp,MPEG4 kamalruslan Софт 4 20.08.2015 16:16
Как преобразовать формат времени в числовой формат solnce60 Microsoft Office Excel 1 28.04.2013 11:16
Вопрос по Image (скачанная картинка не хочет выводиться в Image) Radnor Мультимедиа в Delphi 2 06.07.2009 02:20
Transparent color image если формат jpeg или jpg postal2 Компоненты Delphi 7 03.07.2009 12:14
Прочитать png формат в image Sin3v Общие вопросы Delphi 1 18.07.2008 11:45