Hola a todos, es la primera vez que expongo un problema en este foro.
Me gustaría saber si se puede pasar de hBitmap a hImage.
Me explico, Estoy haciendo un programa que se visualizan las caratulas extraídas del metadato ITAG de los ficheros mp3 de música en un Picturebox.
Estoy utilizando el control ‘ImagenSlide’ de nuestro estimado Leandro Ascierto para visualizar las covers de las canciones en una lista.
En el control ‘ImageSliderl’ en la Sub DrawImage(…), es donde se cargan las imágenes.
En este punto pensé, bueno… si ya tengo cargada la imagen en la variable ‘Caratula’ tipo ‘hBitmap’ como variable ‘Publica’ para todo el programa, porque no aprovecharla y no tener que guardarla a un fichero JPG y que después en una línea del programa de DrawImage() en ‘GdipLoadImageFromFile(StrPtr(FileName), hImage)’ la tenga que cargar de nuevo en la variable ‘FileName’ y procesar la imagen 2 veces.
Aquí está el problema, una vez que carga la libreria ‘GdipLoadImageFromFile’ el fichero temporal jpg, la devuelve como ’hImage’.
Creo que para no perder tanto tiempo en ese proceso y se carguen las imágenes más rápidas en el control ‘ImageSliderl’ puede haber otra solución.
He estado mirando librerías y hay una que se llama ‘GdipLoadImageFromStream(…) no se si podría servir.
Espero que me haya explicado bien y puedan ayuderme.
Esto es lo que estoy haciendo hasta ahora y funciona, pero se podría mejorar con lo ya mencionado???
Private Sub DrawImage(hGraphics As Long, Index As Long, FileName As String, DestTR As RECTF)
Dim TR As RECTF
Dim Conver As Long
Dim hImage As Long
Dim ImagPlayMow As Long
Dim PLeft As Long, PTop As Long
Dim ReqWidth As Long, ReqHeight As Long
Dim HScale As Double, VScale As Double
Dim MyScale As Double
Dim ImgWidth As Long
Dim ImgHeight As Long
Dim SourceHDC As Long
Dim TempFile As String
‘ Código añadido para que de la varible ‘CARATULA’
‘ que esta como:
‘ Public Caratula As StdPicture
' En otro modulo.
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If mLoadCover = FromMusicFile Then
TempFile = App.Path & "\tmpCover.jpg"
Call LoadTag(FileName) ' Llama al objeto que extrae la carátula del MP3 y la guarda en la variable 'Caratula'
Call SavePicture(Caratula, TempFile) ' Guarda la imagen de la variable 'Caratula' en el fichero temporal 'tmpCover.jpg'
FileName = TempFile
End If
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If GdipLoadImageFromFile(StrPtr(FileName), hImage) = 0 Then
Call GdipGetImageBounds(hhImage, TR, UnitPixel)
ImgWidth = TR.nWidth
ImgHeight = TR.nHeight
"
"
‘-----------El Código Continua IGUAL -------------------------
En Sub
Gracias.