Métodos para cambiar el tamaño de una imagen en VB6.
Método 1:
Utilizando el método PaintPicture de un objeto PictureBox.
Sintaxis
objeto.PaintPicture imagen, x1, y1,
ancho1, alto1, x2, y2, ancho2, alto2,
códigoOp
Parte |
Descripción |
objeto |
Opcional.
Una expresión de objeto
que da como resultado un objeto de la lista Se aplica a. Si se omite objeto,
se supone que objeto es el objeto Form que tenga el enfoque. |
imagen |
Requerido.
El origen del gráfico que se va a presentar en objeto. Debe ser la
propiedad Picture de un objeto Form o control PictureBox. |
x1, y1 |
Requerido.
Valores de precisión simple que indican las coordenadas de destino (eje x y
eje y) del objeto en el que se dibuja la imagen. La propiedad ScaleMode
del objeto determina las unidades de medida que se usan. |
ancho1 |
Opcional.
Un valor de precisión simple que indica el ancho de destino de la imagen.
La propiedad ScaleMode del objeto determina las unidades de
medida que se usan. Si el ancho de destino es mayor o menor que el ancho de
origen (ancho2), imagen se amplía o se comprime para que quepa.
Si se omite, se usa el ancho de origen. |
alto1 |
Opcional.
Un valor de precisión simple que indica el alto de destino de la imagen.
La propiedad ScaleMode del objeto determina las unidades de
medida que se usan. Si el alto de destino es mayor o menor que el alto de
origen (alto2), la imagen se amplía o se comprime para que
quepa. Si se omite, se usa el alto de origen. |
x2, y2 |
Opcional.
Valores de precisión simple que indican las coordenadas (eje x y eje y) de la
región de recorte dentro de la imagen. La propiedad ScaleMode
del objeto determina las unidades de medida que se usan. Si se omite,
se asume el valor 0. |
ancho2 |
Opcional.
Un valor de precisión simple que indica el ancho de la región de recorte de
la imagen. La propiedad ScaleMode del objeto determina
las unidades de medida que se usan. Si se omite, se usa el ancho de origen
total. |
alto2 |
Opcional.
Un valor de precisión simple que indica el alto de origen de una región de
recorte de la imagen. La propiedad ScaleMode del objeto
determina las unidades de medida que se usan. Si se omite, se usa el alto de
origen total. |
códigoOp |
Opcional.
Un valor de tipo Long o código que se usa sólo con mapas de bits.
Define una operación bit a bit (como vbMergeCopy o vbSrcAnd)
que se realiza sobre imagen a medida que se dibuja sobre objeto.
Para obtener la lista completa de constantes de operadores a nivel de bits,
vea el tema Constantes de RasterOp en la Ayuda de Visual Basic. Existen algunas limitaciones del uso de
códigos opcionales. Por ejemplo, no puede usar un código opcional distinto
que vbSrcCopy si el origen es un icono o un metarchivo, y los códigos
opcionales que interactúan con el patrón (o "brush" en términos
SDK) como MERGECOPY, PATCOPY, PATPAINT y PATINVERT actualmente interactúan
con la propiedad FillStyle del destino. Nota CódigoOp se
utiliza para pasar una operación a nivel de bit en un mapa de bits. Colocar
un valor en este argumento cuando pasa otro tipo de imagen puede provocar un
error "El argumento o la llamada al procedimiento no son válidos".
Ocurre en tiempo de diseño. Para evitar este error, deje el argumento códigoOp
en blanco para cualquier tipo de imagen que no sea un mapa de bits. |
Ejemplo:
Picture1.PaintPicture
Picture1.Picture, 0, 0, 100, 100, 0, 0
Notas:
Se
tiene que prestar atención en la propiedad ScaleMode del
objeto PictureBox, ya que este puede estar en Pixel, unidad de medida con la
que trabajamos con la imagen dentro del control y las propiedades Width y
Height que pueden estar en Twip. La conversión podemos realizarla utilizando
las propiedades Screen.TwipsPerPixelX y Screen.TwipsPerPixelY.
Método 2: Utilizando la
función de la API CopyImage y el portapapeles:
Sintaxis
CopyImage
(ByVal handle As Long, ByVal imageType As Long, ByVal newWidth As Long, ByVal
newHeight As Long, ByVal lFlags As Long) As Long
Parte |
Descripción |
handle |
Manejador
de la imagen a copiar. |
imageType |
Tipo
de imagen a ser copiada: IMAGE_BITMAP, IMAGE_ICON, IMAGE_CURSOR |
newWidth |
La anchura deseada, en píxeles, de la imagen. Si este es cero,
entonces la imagen devuelta tendrá la misma anchura que la hImage original. |
newHeight |
La altura deseada, en píxeles, de la imagen. Si este es cero,
entonces la imagen devuelta tendrá la misma altura que el hImage original. |
lFlags |
Puede
ser uno de los siguientes valores:
LR_COPYDELETEORG, LR_COPYFROMRESOURCE, LR_COPYRETURNORG, LR_CREATEDIBSECTION,
LR_DEFAULTSIZE, LR_MONOCHROME |
Más
información
Ejemplo:
Public Const IMAGE_BITMAP = 0
Public Const LR_COPYRETURNORG = &H4
Public Const CF_BITMAP = 2
Public Declare Function SetClipboardData Lib "user32" (ByVal wFormat
As Long, ByVal hMem As Long) As Long
Public Declare Function CopyImage Lib "user32" (ByVal handle As Long,
ByVal imageType As Long, ByVal newWidth As Long, ByVal newHeight As Long, ByVal
lFlags As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As
Long) As Long
Private Sub AjustarTamano(vNewWidth As Long,
vNewHeight As Long)
Dim hNew As Long
hNew = CopyImage(Picture1.Image,
IMAGE_BITMAP, vNewWidth, vNewHeight, LR_COPYRETURNORG)
OpenClipboard Form1.hwnd
EmptyClipboard
SetClipboardData CF_BITMAP, hNew
CloseClipboard
Picture1.Picture = Clipboard.GetData(2)
End Sub
Comentarios
Publicar un comentario