Cómo obtener el tamaño de una Imagen???????
Trato de hacerlo con por ejemplo Picture.Height pero no me da exacto, el tamaño que me da es más grande.......
| ||||
![]() Cómo obtener el tamaño de una Imagen??????? Trato de hacerlo con por ejemplo Picture.Height pero no me da exacto, el tamaño que me da es más grande.......
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| ||||
![]() Cita: En realidad no, pues la diferencia es demasiado grande..... el doble y algo más ....
Iniciado por MaxExtreme No te da exacto porque incluye bordes del control...
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| |||
Cita: Entonces el problema son las unidades. VB tiene su propio "sistema de medida" que no va por píxeles.
Iniciado por David el Grande En realidad no, pues la diferencia es demasiado grande..... el doble y algo más .... |
| ||||
de hecho el que vb utiliza es Twip(de Vb) cambiale eso como medida del form y se tendría que solucionar... nos vemos..
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
Pues tampoco lo de los píxeles es el problema, pues ya lo probé con:
Código:
y tampoco que me dá exacto... Picture1.Height / Screen.TwipsPerPixelY ![]()
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| ||||
![]() Si, aún es grande la diferencia
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| ||||
Pero el problema no es con el PictureBox, sino con una Imagen en Memoria cargada con LoadPicure, o simplemente teniendo el Handle de la Imagen... ![]()
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| |||
Borro el código anterior y posteo este. Funciona con imágenes cargadas (LoadPicture), como con las imágenes de un PictureBox o cualquier otro control con la propiedad Picture, tenga borde o no, tenga AutoSize o no.
Código:
' Devuelve el ancho real de un Picture en píxeles Public Function ImagenAncho(ByRef p As Picture) As Integer ImagenAncho = p.Width / Screen.TwipsPerPixelX * 0.566893424036281 End Function ' Devuelve el alto real de un Picture en píxeles Public Function ImagenAlto(ByRef p As Picture) As Integer ImagenAlto = p.Height / Screen.TwipsPerPixelY * 0.566893424036281 End Function Para usarlo con una imagen en memoria:
Código:
Dim x As Picture Set x = LoadPicture("C:\imagen.bmp") MsgBox "Imagen en memoria: " & vbCrLf & ImagenAlto(x) & vbCrLf & ImagenAncho(x) Para usarlo con un control con la propiedad Picture, como un PictureBox:
Código:
MsgBox "Imagen en PictureBox: " & vbCrLf & ImagenAlto(PictureBox.Picture) & vbCrLf & ImagenAncho(PictureBox.Picture) Las funciones son simplemente una chapuza, pero aún lo es más VB si no proporciona una función que calcule todo esto. La proporción que he calculado (0.566893424036281) debería ser suficiente (en cuestión de decimales) para que los píxeles devueltos no tengan posibilidad de error en redondeo. Teóricamente Screen.TwipsPerPixelX y Screen.TwipsPerPixelY son dependientes de la pantalla, he probado con diferentes resoluciones y parece que funciona bien, y no afecta a la proporción 0.566893424036281 sino que es la misma para todas. En cualquier caso, ruego precaución con este código y pruebas en las máquinas destino antes de usarlo continuadamente. Como LoadPicture es propiamente de VB, no hay funciones de la API relacionadas y hay que inventarse esta clase de cosas. Usad la API, con funciones como LoadImage, mucho mejor. Última edición por MaxExtreme; 09/08/2005 a las 12:59 |
| ||||
![]() Es una pregunta algo tonta la que voy a hacer, pero please, si alguien tiene la bondad de responerme: ¿Una imagen solo puede tener tamaño entero en pixeles, o sea por ejemplo 32x32? ¿O puede tener decimales? Me imagino que no, pues como guardará por ejemplo la mitad de un punto, pero lo pregunto porque no tengo certeza ![]() ![]()
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |