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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2011, 03:10   #1
I'm_Not_Afraid
 
Регистрация: 22.05.2011
Сообщений: 8
По умолчанию Image в Delphi

Доброго времени суток. Подскажите, пожалуйста, как содержимое трех Image-ов(по-сути, три Bitmap-а) объединить в один Bitmap и вывести на другой Image? Спасибо за уделенное время!
I'm_Not_Afraid вне форума Ответить с цитированием
Старый 22.05.2011, 07:46   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  BM : TBitmap;
  R : Trect;
begin
  Image4.AutoSize := True; //объединяющий Image 

  BM := TBitmap.Create;
  BM.Width := Image1.ClientWidth + Image2.ClientWidth + Image3.ClientWidth;
  //если картинки одинаковые по высоте
  //  BM.Height := Image1.ClientHeight;
  //если картинки разные по высоте
  BM.Height := Max(Max(Image1.ClientHeight, Image2.ClientHeight),Image3.ClientHeight);

  R := Image1.ClientRect;
  BM.Canvas.StretchDraw(R, Image1.Picture.Bitmap);
  R := Image2.ClientRect;
  OffsetRect(R, Image1.ClientWidth, 0);
  BM.Canvas.StretchDraw(R, Image2.Picture.Bitmap);
  R := Image3.ClientRect;
  OffsetRect(R, Image1.ClientWidth+Image2.ClientWidth, 0);
  BM.Canvas.StretchDraw(R, Image3.Picture.Bitmap);

  Image4.Picture.Assign(BM);
  BM.Free;
end;
Прик вне форума Ответить с цитированием
Старый 22.05.2011, 12:22   #3
I'm_Not_Afraid
 
Регистрация: 22.05.2011
Сообщений: 8
По умолчанию

а с чем может быть связана ошибка класса EConvertError "Cannot assign a TBitmap to a TBitmapCanvas"?
I'm_Not_Afraid вне форума Ответить с цитированием
Старый 22.05.2011, 12:28   #4
I'm_Not_Afraid
 
Регистрация: 22.05.2011
Сообщений: 8
По умолчанию

а, извиняюсь, мой косяк... я по-ошибке ввел Image.Canvas, a не Image.Picture. Только почему-то перетягивается только первое изображение
I'm_Not_Afraid вне форума Ответить с цитированием
Старый 22.05.2011, 12:39   #5
I'm_Not_Afraid
 
Регистрация: 22.05.2011
Сообщений: 8
По умолчанию

все, я разобрался, спасибо большое

только там небольшой косяк у Вас в OffsetRect, первое целочисленное значение отвечает за смещение по-горизонтали, а второе - по-вертикали. получилось, что я смещал по-горизонтали, а надо было по-вертикали.

спасибо
I'm_Not_Afraid вне форума Ответить с цитированием
Старый 22.05.2011, 15:16   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

"Косяком" и не пахнет. За базар надо отвечать
В исходном тексте задания не было ни слова каким образом объединять картинки, потому был дан пример объединения по горизонтали.
Желаем получить конкретный ответ - формулируем задачу с достаточными для такого ответа исходными данными.
Прик вне форума Ответить с цитированием
Старый 22.05.2011, 18:57   #7
I'm_Not_Afraid
 
Регистрация: 22.05.2011
Сообщений: 8
По умолчанию

ок, пардон снова мой косяк спасибо еще раз
I'm_Not_Afraid вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Image в Delphi LilliPut Помощь студентам 11 16.05.2011 18:00
Delphi 7 Image Itachi Помощь студентам 6 16.04.2011 18:14
имя Image в delphi TaYgA Помощь студентам 6 25.09.2010 18:37
PageControl+Image (Delphi) VadEr Помощь студентам 2 05.06.2009 21:04
Image B Delphi Gromsky Помощь студентам 1 29.02.2008 15:40