Categorias
dll imagem resources

Inserindo Imagem em DLL

A alguns dias atr??s, comecei a desenvolver um Framework para que eu pudesse incorporar em minhas aplica????es e que pudesse reaproveit??-la constantemente. Nela cont??m classes de conex??o, cria????o de objetos dinamicamente e imagens. Estava quase pronto quando me deparei com a parte das imagens. Eu queria que as imagens ficassem na DLL e quando eu fosse atualizar uma aplica????o, eu s?? substituiria a DLL e n??o esquecesse dos arquivos.

??bvio que comecei a ler alguns materiais na Internet para saber qual o melhor m??todo para desenvolver. Por mais que eu lia, mais eu achava complicado. E outros, quanto eu mais fazia mais eu achava que estava errado. At?? que ent??o consegui…

Voc?? pode utilizar de duas formas: chamando dentro da pr??pria DLL ou atrav??s de uma p??gina ASPX para, ao final, gerar uma imagem. Irei explicar como pois ?? praticamente a mesma coisa…

No Visual Studio, abra seu projeto (ele deve ser um Class Library). Clique com o direito sobre a Solu????o na aba do Solution Explorer e escolha a op????o Properties. Ir?? abrir o conjunto de propriedades vigentes da DLL. Entre na aba Resources e notar?? a seguinte tela:


Nesse caso ele diz que n??o, por padr??o, nenhum recurso. Clique sobre o link para adicionarmos um. Agora, v?? em Add Resource, New Image e escolha um dos tipos de imagem suportado ou escolha Add Existing File… para selecionar uma imagem existente no disco.

Se escolhido a primeira op????o ter?? que dar um nome que o identifique para que possamos invoc??-lo posteriormente e ter?? que desenhar ou incorporar uma imagem no editor que ir?? abrir. Caso contr??rio, a segunda op????o ?? a mais r??pida pois iremos apenas selecionar uma imagem que ela j?? ser?? incoporada.
Logo ap??s incorpor??-la nos recursos, ver??, atrav??s do Solution Explorer, que foi criada uma pasta chamada Resources contendo a imagem desejada. Agora iremos permitir tamb??m que a imagem seja “chamada” ou, melhor dizendo, seja embedded. Para isso, clique com o direito sobre a imagem e entre em Properties. No Build Action, escolha a propriedade Embedded Resource.
Agora, v?? na pasta Properties da solu????o e abra o arquivo AssemblyInfo.cs. Adicione o namespace:
using System.Web.UI;
E adicione a seguinte linha no final (pode ser depois de todas que tiverem):
[assembly: WebResource(“Framework.Resources.Calendario.png”, “image/png”)]

Sendo que ?? constitu??do por:

  • Framework: ?? o namespace que comp??e sua solu????o, no meu caso estava utilizando o namespace Framework;
  • Resources: indica o nome da pasta onde est?? o recurso;
  • Imagem

Assim a imagem j?? est?? incorporada ?? DLL e prontra para uso. Para invocarmos, conforme descrito anteriormente, pode ser de duas formas: de dentro da DLL e fora dela.

Por dentro, podemos gerar um objeto Image e adicionar seu atributo ImageUrl diretamente:

Image imagem = new Image();

imagem.ImageUrl = ClientScript.GetWebResourceUrl(this.GetType(), “Framework.Resources.Calendario.png”);

Pode-se utilizar a mesma forma de invoca????o quando for chamar de fora da DLL pelo CodeBehind. Se for chamar direto na p??gina ASPX basta utilizar as tags <%= %>colocando dentro o m??todo de invoca????o do recurso.

Voc?? pode utilizar essa forma de acoplamento de recursos para alguns outros tipos de objetos como JavaScript, por exemplo. Lembrando que n??o ?? bom ter uma DLL muito grande com diversos objetos. Caso for de extrema import??ncia mant??-lo na DLL, fragmente-os em diversas outras DLLs.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *