Проблема копирования изображения

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Проблема копирования изображения

Сообщение qivi »

Столкнулся с проблемой копирования изображения из TBitmap в TImage.
Вот код:

Код: Выделить всё

  var
    Img:TImage;
~
procedure TForm1.BitBtn1Click(Sender:TObject);
  var
    Bitmap:TBitmap;
begin
  if OD.Execute then
  begin
    Bitmap:=TBitmap.Create;
    Bitmap.LoadFromFile(OD.FileName);
    Img.Picture.Assign(Bitmap);
    Bitmap.Free;
  end;
end;   

Ошибка возникает в строке: Img.Picture.Assign(Bitmap), загрузка в строке Bitmap.LoadFromFile(OD.FileName) проходит успешно - проверил.
Сразу говорю, мне не нужно загружать изображение компонентом TImage мне нужно его именно скопировать.

Что я не так делаю в упор не вижу... :(
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

С каким форматом картинки пытаетесь работать?
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

BMP, специально же написал, загрузка проходит успешно.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

ну так... А вдруг

Код: Выделить всё

Img.Picture = nil

Надо проверить.
А вдруг вообще

Код: Выделить всё

Img = nil


А может быть, надо вместо

Код: Выделить всё

Img.Picture.Assign(Bitmap);

делать

Код: Выделить всё

Img.Picture.Bitmap := Bitmap

или вообще так

Код: Выделить всё

Img.Picture.Bitmap.Assign(Bitmap)
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

А вдруг вообще

Код: Выделить всё

Img = nil


hinst, точно так и оказалось... создал ТИмидж в дизайнере, а переименовал в коде (в объявлениях), среда создала повторное объявление созданного в дизайнере ТИмеджа, а я обращаюсь к случайно образовавшемуся и не созданному компоненту :oops:
iskander
энтузиаст
Сообщения: 630
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

Должен работать любой из вариантов:

Код: Выделить всё

Img.Picture.Bitmap.Assign(Bitmap);

или

Код: Выделить всё

Img.Picture.Bitmap := Bitmap

и даже

Код: Выделить всё

Img.Picture.Assign(Bitmap);
Ответить