C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: как поместить рисунок в exe файл?  (Прочитано 4505 раз)
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


как поместить рисунок в exe файл?
« : 19 Февраль 2014, 11:28:39 »

как поместить рисунок в exe файл?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: как поместить рисунок в exe файл?
« Ответ #1 : 19 Февраль 2014, 12:06:52 »

Как ресурс приложения. Либо консольной утилитой из поставки билдера или кучей нормальных визуальных прог. На память назову только Restorator2007. Но он платный.

Да, бесплатная кажется Resource Builder.

Да, точняк, он самый!
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: как поместить рисунок в exe файл?
« Ответ #2 : 19 Февраль 2014, 14:52:38 »

Зачем всякие программы? Просто:

1. Создать файл в проекте с расширением *.rc (например resource.rc). В нем прописать
Цитировать
MYPICTURE RT_BITMAP file.bmp

Добавить этот файл в проект.

2. Скомпилировать проект.

Теперь если надо из программы обратиться к рисунку, надо просто вытащить ресурс MYPICTURE. Например
Код
#include 
 
std::unique_ptrTResourceStream> ptRes(new TResourceStream((unsigned)HInstance, L"MYPICTURE", L"RT_BITMAP"));
ptRes->SaveToFile("C:\\1.bmp"); // сохранить рисунок в файл
 

Всё ))
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: как поместить рисунок в exe файл?
« Ответ #3 : 20 Февраль 2014, 12:35:53 »

Так а вот создать этот самый файл *.rc как лучше? Обычно при создании файлов я делаю так File->New->Other и с вкладки New Items уже выбираю то что нужно. Здесь как правильно сделать? И потом как к нему обратиться? Вот если у меня на форме Image предположим имеется.
Image1->LoadFromFile(здесь что писать?);
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: как поместить рисунок в exe файл?
« Ответ #4 : 20 Февраль 2014, 12:37:37 »

или стоп или ptRes и есть название этого ресурса. Запутался что то
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: как поместить рисунок в exe файл?
« Ответ #5 : 20 Февраль 2014, 12:44:01 »

Цитата: Sergey1985 от 20 Февраль 2014, 12:35:53
Так а вот создать этот самый файл *.rc как лучше? Обычно при создании файлов я делаю так File->New->Other и с вкладки New Items уже выбираю то что нужно. Здесь как правильно сделать? И потом как к нему обратиться? Вот если у меня на форме Image предположим имеется.
Image1->LoadFromFile(здесь что писать?);

Это просто текстовый файл. Расширение лишь ему смени.
Обратиться из проги к картинке как к ресурсу. Тебе же чел выше написал как.
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: как поместить рисунок в exe файл?
« Ответ #6 : 20 Февраль 2014, 13:41:38 »

Цитата: Sergey1985 от 20 Февраль 2014, 12:35:53
Так а вот создать этот самый файл *.rc как лучше? Обычно при создании файлов я делаю так File->New->Other и с вкладки New Items уже выбираю то что нужно. Здесь как правильно сделать? И потом как к нему обратиться? Вот если у меня на форме Image предположим имеется.
Image1->LoadFromFile(здесь что писать?);

Насчет формата файла - это просто текстовый файл, как уже сказали. Делай в блокноте и сохраняй с расширением *.rc.
Загрузить в TImage можно так
Код
Image1->Picture->Bitmap->LoadFromResourceName((int)HInstance, L"MYPICTURE");
 
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: как поместить рисунок в exe файл?
« Ответ #7 : 20 Февраль 2014, 16:45:01 »

Получилось 
Записан
d7d1cd
Участник


Сказали спасибо: +59/-24
Offline

Сообщений: 1005


Re: как поместить рисунок в exe файл?
« Ответ #8 : 22 Февраль 2014, 14:02:09 »

Делал я когда-то программу. Так она у меня в ресурсах держала не только статические картинки, но и анимированные смайлики, а так же звук. В общем, в ресурсы, наверное, можно засунуть все, что угодно.
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: как поместить рисунок в exe файл?
« Ответ #9 : 23 Февраль 2014, 14:12:22 »

Цитата: d7d1cd от 22 Февраль 2014, 14:02:09
В общем, в ресурсы, наверное, можно засунуть все, что угодно.

Без "наверное" )) Есть общий тип ресурсов для любых данных - RC_DATA.
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: как поместить рисунок в exe файл?
« Ответ #10 : 26 Февраль 2014, 09:43:17 »

Так рано обрадовался появилась ошибка
[C++ Error] Unit1.cpp(43): E2316 'unique_ptr' is not a member of 'std'

Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: как поместить рисунок в exe файл?
« Ответ #11 : 26 Февраль 2014, 09:44:18 »

[C++ Error] Unit1.cpp(43): E2108 Improper use of typedef 'TResourceStream'
Записан
d7d1cd
Участник


Сказали спасибо: +59/-24
Offline

Сообщений: 1005


Re: как поместить рисунок в exe файл?
« Ответ #12 : 26 Февраль 2014, 18:01:50 »

Цитата: Sergey1985 от 26 Февраль 2014, 09:43:17
Так рано обрадовался появилась ошибка
[C++ Error] Unit1.cpp(43): E2316 'unique_ptr' is not a member of 'std'
Код покажи. Телепаты временно в отпуске...
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


Re: как поместить рисунок в exe файл?
« Ответ #13 : 03 Март 2014, 12:04:35 »

//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

using namespace std;
#include

#pragma resource "resource.res"
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unique_ptrptRes(new TResourceStream((unsigned)HInstance, L"MYPICTURE", L"RT_BITMAP"));
Image1->Picture->Bitmap->LoadFromResourceName((int)HInstance, "PIC");
}
//---------------------------------------------------------------------------
Записан
d7d1cd
Участник


Сказали спасибо: +59/-24
Offline

Сообщений: 1005


« Ответ #14 : 03 Март 2014, 20:56:12 »

Замени код обработки нажатия кнопки:
Код
TResourceStream *RS = new TResourceStream((int)HInstance, L"MYPICTURE", L"RT_BITMAP");
Image1->Picture->Bitmap->LoadFromStream(RS);
delete RS;
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.07 секунд. Запросов: 22.