|
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 »
|
|
Так а вот создать этот самый файл *.rc как лучше? Обычно при создании файлов я делаю так File->New->Other и с вкладки New Items уже выбираю то что нужно. Здесь как правильно сделать? И потом как к нему обратиться? Вот если у меня на форме Image предположим имеется.
Image1->LoadFromFile(здесь что писать?);
Это просто текстовый файл. Расширение лишь ему смени.
Обратиться из проги к картинке как к ресурсу. Тебе же чел выше написал как.
|
|
|
|
|
|
S0mbre
Глобальный модератор
Сказали спасибо: +1113/-22
Offline
Сообщений: 2132
S0mbre
|
|
Re: как поместить рисунок в exe файл?
« Ответ #6 : 20 Февраль 2014, 13:41:38 »
|
|
Так а вот создать этот самый файл *.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 »
|
|
В общем, в ресурсы, наверное, можно засунуть все, что угодно.
Без "наверное" )) Есть общий тип ресурсов для любых данных - 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 »
|
|
Так рано обрадовался появилась ошибка
[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;
|
|
|
|
|
|