jpeg dentro de arquivo .res
Amigos,
alguem conseguiu essa façanha:
colocar um arquivo JPEG dentro de um arquivo .RES e carrega-lo dentro de um TIMage??
alguem conseguiu essa façanha:
colocar um arquivo JPEG dentro de um arquivo .RES e carrega-lo dentro de um TIMage??
Uildenei
Curtidas 0
Respostas
Uildenei
19/09/2007
Amigos,
desculpe a afobação, mas quando se esta de cabeça quente as ideias nao fluem normalmente.
mas vamos ao que interessa:
como utilizar JPEG em Resources (.RES) e embutir ele numa DLL de recursos:
1º passo:
utilize um editor de .RES ex: ResourceBuilder, XN Resource Editor, etc..
crie um novo item de recurso do tipo RCDATA e importe o arquivo desejado;
2º passo:
Compile o arquivo de recursos (se necessario) para ser gerado o arquivo .RES;
3º passo:
inclua o arquivo .RES na DLL via diretiva {$R seu_arq_res.res};
4º passo:
compile sua aplicação para que a DLL seja gerada;
5º passo
a carga da DLL e da imagem .. vejam abaixo a funcao para tal procedimento:
procedure CarregaRecursoJPG(sID: String; Picture: TPicture);
var h, r: THandle;
jpg: TJPEGImage;
rs: TResourceStream;
begin
h:=LoadLibrary(´baseres.dll´);//carrega a DLL
jpg:=TJPEGImage.Create; //cria o jpeg para carregar a imagem
rs:=nil;//inicializa o stream dos recursos
try
r:=FindResource(h, PAnsiChar(sID), RT_RCDATA);//localiza o recurso dentro da DLL
if r <> 0 then//se encontrar
begin//carrega o conteudo do recurso pra dentro do stream
rs:=TResourceStream.Create(h, PAnsiChar(sID), RT_RCDATA);
jpg.LoadFromStream(rs);//carrega do stream pra dentro do objeto JPEG
Picture.Assign(jpg);//atribui a imagem pro objeto Picture que pode ser de um TImage por exemplo
end;
finally//libera toda a galera da memoria ... e soh alegria
FreeLibrary(h);
FreeAndNil(jpg);
end;
end;
desculpe a afobação, mas quando se esta de cabeça quente as ideias nao fluem normalmente.
mas vamos ao que interessa:
como utilizar JPEG em Resources (.RES) e embutir ele numa DLL de recursos:
1º passo:
utilize um editor de .RES ex: ResourceBuilder, XN Resource Editor, etc..
crie um novo item de recurso do tipo RCDATA e importe o arquivo desejado;
2º passo:
Compile o arquivo de recursos (se necessario) para ser gerado o arquivo .RES;
3º passo:
inclua o arquivo .RES na DLL via diretiva {$R seu_arq_res.res};
4º passo:
compile sua aplicação para que a DLL seja gerada;
5º passo
a carga da DLL e da imagem .. vejam abaixo a funcao para tal procedimento:
procedure CarregaRecursoJPG(sID: String; Picture: TPicture);
var h, r: THandle;
jpg: TJPEGImage;
rs: TResourceStream;
begin
h:=LoadLibrary(´baseres.dll´);//carrega a DLL
jpg:=TJPEGImage.Create; //cria o jpeg para carregar a imagem
rs:=nil;//inicializa o stream dos recursos
try
r:=FindResource(h, PAnsiChar(sID), RT_RCDATA);//localiza o recurso dentro da DLL
if r <> 0 then//se encontrar
begin//carrega o conteudo do recurso pra dentro do stream
rs:=TResourceStream.Create(h, PAnsiChar(sID), RT_RCDATA);
jpg.LoadFromStream(rs);//carrega do stream pra dentro do objeto JPEG
Picture.Assign(jpg);//atribui a imagem pro objeto Picture que pode ser de um TImage por exemplo
end;
finally//libera toda a galera da memoria ... e soh alegria
FreeLibrary(h);
FreeAndNil(jpg);
end;
end;
GOSTEI 0