Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
354 / 154 / 39
Регистрация: 11.07.2013
Сообщений: 834
1

Как можно сохранить картинки в ресурсах, а потом выбирать их нажатием соответствующей кнопки

08.11.2015, 11:31. Просмотров 478. Ответов 9
Метки нет (Все метки)

А не подскажите, как можно сохранить картинки в ресурсах, а потом выбирать их нажатием соответствующей кнопки (т.е. чтобы картинку были уже в составе exe-шника).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2015, 11:31
Ответы с готовыми решениями:

Нажатием левой кнопки мыши выбирать и запоминать цвет, при нажатии правой кнопки мыши - устанавливать выбранный цвет
Люди добрые, киньте какой-нибудь рабочий .asm для masm, похожий на решение следующей задачи, а то...

Можно ли сохранить настройки программы в ресурсах?
Мне нужно сохранить некоторые настройки программы, но хотелось бы без лишних обращений в реестр или...

Как можно сделать, нажатием кнопки обнулить данные только с одного поля?
Уважаемые подскажите пожалуйста ,как можно сделать, нажатием кнопки обнулить данные только с одного...

Можно ли сохранить базу данных в ресурсах программы (в .exe файле)?
Можно ли сохранить базу данных в ресурсах программы (в .exe файле)? И как при этом установить...

9
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30334 / 19826 / 7750
Регистрация: 22.10.2011
Сообщений: 34,573
Записей в блоге: 6
08.11.2015, 13:59 2
Создать RC-файл и подключить его к проекту: Lazarus Resources
1
2 / 2 / 0
Регистрация: 29.09.2010
Сообщений: 34
09.11.2015, 23:09 3
Если картинки то проще воспользоваться TImageList
1
354 / 154 / 39
Регистрация: 11.07.2013
Сообщений: 834
10.11.2015, 09:52  [ТС] 4
Цитата Сообщение от forfrends Посмотреть сообщение
Если картинки то проще воспользоваться TImageList
1. Это если иконки 16х16, то возможно да, а если картинки 1000x1000.
2. Ни свойств, ни процедур для загрузки из ImageList в Image я не встречал.
Поделитесь, как это сделать.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30334 / 19826 / 7750
Регистрация: 22.10.2011
Сообщений: 34,573
Записей в блоге: 6
10.11.2015, 10:08 5
Цитата Сообщение от shyub Посмотреть сообщение
Поделитесь, как это сделать.
Pascal
1
ImageList1.Draw(Image1.Canvas, 0, 0, pic_num);
Цитата Сообщение от shyub Посмотреть сообщение
а если картинки 1000x1000
Ну, а если картинки 1000*1000 и ты их в ресурсы заталкиваешь? Думаешь, это меньший объем к результирующему файлу прибавит? Или просто, чтобы создавать приложение было удобнее? (а то я видел формы, перенасыщенные изображениями - по 220Мб, пока загрузится - с ума сойти можно)
1
354 / 154 / 39
Регистрация: 11.07.2013
Сообщений: 834
10.11.2015, 11:21  [ТС] 6
Цитата Сообщение от volvo Посмотреть сообщение
ImageList1.Draw(Image1.Canvas, 0, 0, pic_num);
Получается вместо картинки чёный квадрат, т.к. в ImageList сохраняется всего 16x16 пикселей.ImageList_and_Image.rar
0
354 / 154 / 39
Регистрация: 11.07.2013
Сообщений: 834
10.11.2015, 11:36  [ТС] 7
Извиняюсь, я не изменил Height и Width в ImageList1. Однако теперь отображается только та картинка, которую выбрал первой.

Добавлено через 2 минуты
Вот в таком виде всё заработало.
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Canvas.Clear;
  ImageList1.Draw(Image1.Canvas, 0, 0, 0);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Image1.Canvas.Clear;
  ImageList1.Draw(Image1.Canvas, 0, 0, 1);
end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30334 / 19826 / 7750
Регистрация: 22.10.2011
Сообщений: 34,573
Записей в блоге: 6
10.11.2015, 11:38 8
Сначала нужно изменить размеры компонента TImageList, и только потом добавлять в него изображения. Заодно подкорректировал обработчики нажатия на кнопку: канву Image нужно очищать от предыдущего содержимого, и только потом рисовать новое.
0
Вложения
Тип файла: 7z ImageList_and_Image.7z (989.8 Кб, 4 просмотров)
354 / 154 / 39
Регистрация: 11.07.2013
Сообщений: 834
10.11.2015, 12:18  [ТС] 9
А почему так "раздулся" unit1.lfm-файл (6593 КБ), хотя две помещённые в ImageList картинки "весят" в сумме 430 КБ?

Добавлено через 5 минут
Volvo, а у вас размер меньше - 4396 КБ. На какой версии Lazarusa вы собираете (у меня 1.3)?

Добавлено через 8 минут
Пересобрал ваш, размер не поменялся.

Добавлено через 50 секунд
Спасибо.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30334 / 19826 / 7750
Регистрация: 22.10.2011
Сообщений: 34,573
Записей в блоге: 6
10.11.2015, 13:24 10
У меня Lazarus 1.4.2
Цитата Сообщение от shyub Посмотреть сообщение
хотя две помещённые в ImageList картинки "весят" в сумме 430 КБ?
Ты ж не думаешь, что "под капотом" ImageList хранит изображения в PNG-формате? Они же в bitmap-ы преобразуются.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2015, 13:24

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запись данных в таблицы только нажатием кнопки «Сохранить» на составной форме
Здравствуйте. Как можно осуществить запись данных в таблицы (главную и подчиненную) через связанную...

Нарисовала фигуры на QGraphicsScene. Как их сохранить в XML, JSON чтобы потом можно было их открыть?
подскажите как QGraphicsScene сохранить в XML и JSON чтобы потом можно было их открыть? к...

Как получить дамп памяти программы, чтоб потом можно было его сохранить и проанализировать?
Ну тут собственно есть нюансы: 1. Как собственно получить сам дамп. То есть это скорее всего...

Можно ли рисовать в окне нажатием кнопки?
Попытался осуществить таким образом: case WM_COMMAND: { switch(LOWORD(wParam))...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.