¿Cómo extraer BMP de un DLL?

Estoy haciendo un programa que lleva varios archivos de imágenes los cuales he convertido en DLL con un archivo de recursos, pero tengo el problema de que no sé leer imágenes desde un DLL. También se crear DLL's con imagelist o pictures incluidas, pero ahora aprendí a crear DLL como los programas de la Microsoft (IExplore.exe, Winword.exe) que tienen DLL con imágenes y cadenas de textos.
¿Cómo puedo extraer estás imágenes?
1

1 respuesta

1
Respuesta de
No entiendo muy bien tu pregunta. Si una dll tiene imágenes o lo que sea, que se necesitan usar desde fuera, la propia dll debe prever entre sus fubciones la de suministrar al programa usuario esas imágenes.
Si lo que me dices es que la DLL no tiene esa previsión, y quieres de alguna forma "destriparla" desde el programa que la utilice, no hay ninguna forna standard de hacer eso, porque justamente la misión de una dll es encapsular su contenido de manera que solo se relacione con el exterior con las interfaces previstas
Comprendo, pero no sé cómo hacerlo, estoy comenzando a programar DLL; es un tema nuevo para mí.
¿Podrías ayudarme en eso?
Programo en Visual Basic y la idea es no tener un ejecutable de gran tamaño, sino dividirlo en algunas DLL (Con imágenes, etc.), ya que los archivos de recursos se compilan junto al ejecutable.
Imaginate que tienes una empresa y quieres que cada informe que se imprima lleve el logotipo de la Empresa, que es una imagen.
Si tienes muchos ejecutables que hacen informes, necesitarías poner esa imagen del logotipo en cada ejecutable. (Y si un día cambia el logo, habría que recompilar todos los ejecutables)
Una alternativa es crear una DLL que tenga esa función (Como única función o además de otras) En ese caso harías una DLL que tenga la imagen y defina una clase, por ejemplo LogoEmpresa.
Cuándo hagas un proyecto, incorporas la referencia a la Dll en tu proyecto, y podrás definir objetos de la clase LogoEmpresa. Por ejemplo con
Dim MiLogo as new LogoEmpresa
Si esa clase tiene un método que sea por ejemplo PrintLogo que lo que hace es imprimir el logotipo en las coordenadas por, e y, En tus ejecuatables bastaría con poner:
x=10
y=20
Milogo. PrintLogo x,y
Para que se imprimiera el logotipo en esas coordenadas.
Como ves todo pasa porque la DLL defina una clase con el método previsto para ejecutar cada una de las acciones necesarias.
No se si eso lo que estás buscando. Espero haberte ayudado
Como comentaba, estoy recién experimentando con esta clase de programación (Clases, DLL). Si en mi DLL tengo un archivo de recursos con imágenes, ¿cómo podría ser el procedimiento para mostrarlo?, ¿Tendría qué llamar al indice del recurso como lo hace visual con sus archivos de recurso?
Te agradezco tu disposición.
Si, evidentemente, lo que hay que hacer dentro de la programación de la clase es idéntico a lo que sería un program normal en Visual
Mira: como ejemplo te adjunto una parte de la programación de una clase que define el método PrintBitMap que está manejando un archivo de imagen (Lo que hace es meter la imagen en una tabla de una base de datos)
Public Sub PrintBitMap(ByVal BitMapFile As String, ByVal x As Double, ByVal y As Double, ByVal MaxWidth As Double, ByVal MaxHeigt As Double)
Dim AImagen As Integer
With Formulario.Data1.Recordset
.MoveLast
AImagen = .Fields("indice")
AImagen = AImagen + 1
.AddNew
Set Formulario.Image1.Picture = LoadPicture(BitMapFile)
.Fields("indice") = AImagen
.Update
End With
Graba "LG", P1:=x, P2:=y, P3:=MaxWidth, P4:=MaxHeigt, P5:=AImagen, P7:=BitMapFile
End Sub
Evidentemente hay muchas cosas que no entenderás, porque son propias de la estructura propia de este caso. Simplemente te lo pongo para que veas que no hay nada misterioso en la programación de un método
Ya comprendo, entonces puedo declarar una imagen dentro de un procedimiento así:
public Im1 as picture
public sub Muestra()
set im1=loadrespicture(101,1)
end sub
¿O algo parecido?
Si, puedes hacerlo.
Pero la forma correcta de delarar una imagen es:
Public Im1 as stdpicture
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje

Más respuestas relacionadas

¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema Visual Basic o hacer tu propia pregunta: