REDIMENSIONAR UNA IMAGEN DE VB6

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

Publi
c 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

Entradas populares de este blog

Uso de COALESCE en SQL Server

Programar Copias de Seguridad en SQL Server 2005-2008 Express