Сохранение картинок в программе и их использование

3 минуты на чтение

И снова здравствуйте, немного подумал о тех проблемах, которые могут возникнуть при создании вашей программы (приложения) и пришел к тому, что возможно некоторым необходимо прятать картинки, иконки именно в своей программе, можно в файле ресурсов, но я хотел бы рассказать как спрятать это все дело в самой программе. Хранить теже самые иконки в папке с программой — не самый лучший способ, так как пользователь удалит что-нибудь, а Вам еще думать защиту от «дурака«. Так, что выгодней бы было хранить все в программе, хотя от этого размер Вашего исполняемого файла увеличивается, но способ все равно покажу, а делать выводы по нему только Вам. На форме у меня следующие компоненты

  • TImageList
  • TButton
  • TImage

Вот весь перечень компонентов, который нам необходим, чтобы осуществить то, что я описал выше. Все картинки, иконки мы будем хранить в TImageList, а в TImage мы будем их отображать (естественно по нажатию на кнопку, вот для этого нам и TButton). Незнаю у кого как, но я сразу заметил недостатки данного метода, в TImageList есть свойство Width и Height, которые задают размер хранимых наших картинок, иконок и так далее. Так вот, если выставить сильно большой размер, например 1024х768, то тут произойдет зависание, что и есть минус, этот «глюк» был обнаружен в компиляторе Borland Delphi 7.0. Возможно в Delphi 2010 этой проблемы уже нету, как опробую это дело, так сразу и отпишу об этом.
Так вот, в TImageList хранятся все наши картинки, иконки. Так давайте на событие OnClick нашей кнопки напишем следующий код

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 bmp:TBitmap;
begin
   try
    bmp:=TBitmap.Create;
    ImageList1.GetBitmap(0,bmp);
    Image1.Picture.Assign(bmp);
    bmp.Free;
   except
    on e:Exception do
     bmp.Free;
   end;
end;

Как видите GetBitmap устанавливает в TImageList указатель на индекс, который мы указываем и сохраняет изображение под этим индексом в bmp. Перед этим мы конечно же создали наш TBitmap, а затем с помощью Assign мы сохраняем в TImage. Как видите ничего сложного, работа с иконками тоже самое, только тип немного другое, давайте посмотрим как работать в таком случае с иконками.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 ico:TIcon;
begin
   try
    ico:=TIcon.Create;
    ImageList1.GetIcon(0,ico);
    Image1.Picture.Assign(ico);
    ico.Free;
   except
    on e:Exception do
     ico.Free;
   end;
end;

Как видите все похоже. Думаю урок пригодится в дальнейшем. Да, но не забывайте, что если работаете с ico, то на индексе с которого считываете из TImageList должна лежать картинка именно такого расширения — ico.

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Ну что, в первой части и во второй части статей, про сохранение данных TStringGrid в файлы и открытие из файла данных, с последующей загрузкой их в TStringGrid, мы поговорили о сохранение и считывание данных из типизированного файла, а также сохранение и считы...
В первой части статье по сохранение информации из TStringGrid в файл и считывание из файла в TStringGrid мы узнали как можно в типизированные фалах хранить информацию. Теперь давайте посмотрим как можно сохранить информацию в текстовый файл и считать из него д...
Как и обещал поговорим о том, как еще одним способом можно добавить картинки в БД, да и не только картинки в любую БД. Добавление файлов в любую БД это громко сказано, конечно, мы как бы формально будем хранить эти файлы, а если быть еще более точным, или боле...