PictureClip (Control)

El control PictureClip le permite seleccionar un área de un mapa de bits de origen y presentar después la imagen de esa área en un formulario o un cuadro de imagen. Los controles PictureClip son invisibles en tiempo de ejecución. El siguiente es un mapa de bits típico, que se podría usar en el control PictureClip:

Nombre de archivo

PICCLP32.OCX

Nombre de clase

PictureClip

Comentarios

El control PictureClip proporciona un mecanismo eficaz para almacenar múltiples recursos de imagen. En lugar de usar varios mapas de bits o iconos, cree un mapa de bits de origen que contenga todas las imágenes de iconos que requiera su aplicación. Cuando necesite presentar un icono individual, use el control PictureClip para seleccionar la región del mapa de bits de origen que contiene ese icono.

Por ejemplo, puede usar este control para almacenar todas las imágenes que necesita para presentar un cuadro de herramientas en su aplicación. Resulta más eficaz almacenar todas las imágenes del cuadro de herramientas en un único control PictureClip que almacenar cada una de ellas en un cuadro de imagen diferente. Para ello, primero necesita crear un mapa de bits de origen que contenga todos los iconos del cuadro de herramientas. La imagen anterior es un ejemplo de cómo podría ser ese mapa de bits.

Nota Para aplicaciones con distribución internacional, a veces es más útil almacenar los mapas de bits mediante archivos de recursos. Para obtener más información al respecto, vea el capítulo 16, "Cuestiones internacionales", del Manual del programador de Visual Basic.

Puede usar los dos métodos siguientes para especificar la región de recorte en el mapa de bits de origen:

  • Seleccione cualquier parte del mapa de bits de origen como región de recorte. Especifique la esquina superior izquierda de la región de recorte mediante las propiedades ClipX y ClipY. Especifique el área de la región de recorte mediante las propiedades ClipHeight y ClipWidth. Este método es útil para ver una parte aleatoria de un mapa de bits.

  • Divida el mapa de bits de origen en un número especificado de filas y columnas. El resultado es una matriz uniforme de elementos de imagen numerados como 0, 1, 2, etc. Puede mostrar elementos individuales mediante la propiedad GraphicCell. Este método es útil cuando el mapa de bits de origen contiene una paleta de iconos que desea mostrar individualmente, como en el mapa de bits anterior.

Cargue el mapa de bits de origen en el control PictureClip mediante la propiedad Picture. En el control PictureClip sólo puede cargar archivos de mapas de bits (.bmp).

Nota para la distribución Cuando cree y distribuya aplicaciones que utilicen el control PictureClip, debe instalar PicClp32.ocx en el directorio System o System32 de Microsoft Windows del cliente. El kit de instalación que incluye Visual Basic proporciona herramientas para escribir programas que instalan las aplicaciones correctamente.


No se encuentra el tema

No se halló el tema correspondiente. A continuación enumeramos algunas posibles razones y sus soluciones:

  • El archivo (.chm) que contiene el tema de destino no se encuentra en la ubicación esperada.

    Solución: vuelva a ejecutar la instalación de la Biblioteca MSDN.

  • El archivo (.chm) que contiene el tema actual o el de destino no está actualizado y el vínculo ya no es válido.

    Solución: instale la última versión de la Biblioteca MSDN.

  • El CD de la Biblioteca MSDN no está en la unidad de CD-ROM.

    Solución: inserte el CD en la unidad.


Mensajes de error (Control PictureClip)

La siguiente tabla muestra los errores interceptables del control PictureClip.

Número de error | Constante | Descripción - Explicación del mensaje
7 | picOutOfMemory | Memoria insuficiente.
383 | picSetNotPermitted picSetNotSupported | La propiedad no puede ser establecida en este control. La propiedad es de sólo lectura.
394 | picGetNotSupported | La propiedad es de sólo escritura.
32000 | picInvalidPictureFormat | El formato de la imagen no es compatible.
 |  | En un control PictureClip sólo puede cargar archivos de mapas de bits (.bmp).
32001 | picDisplayContext | Imposible obtener el contexto de la imagen.
32002 | picMemDevContext | Imposible obtener el contexto del dispositivo en memoria.
32003 | picBitmap | Imposible obtener el mapa de bits.
32004 | picSelBitmapObj | Imposible seleccionar el objeto de mapa de bits.
32005 | picIntPicStruct | Imposible asignar la estructura interna de la imagen.
32006 | picBadIndex | Índice GraphicCell incorrecto.
 |  | El argumento índice de la propiedad GraphicCell está fuera del intervalo. Este argumento debe estar comprendido entre 0 y (PicClip.Rows * PicClip.Cols)1.
32007 | picNoPicSize | No se ha especificado un tamaño de la imagen para GraphicCell.
32008 | picBitmapsOnly | Sólo se permiten imágenes de mapas de bits para GraphicCell.
32010 | picBadClip | Petición errónea a la propiedad GraphicCell de PictureClip.
32012 | picGetObjFailed | Error en la función de Windows GetObject().
 |  | Se ha producido un error al llamar a la función de Windows GetObject().
32014 | pic | Error en la función de Windows GlobalAlloc ().
 |  | Se ha producido un error al llamar a la función GlobalAlloc () de Windows.
32015 | picClipBounds | Error en el límite de la región de recorte.
 |  | Las propiedades ClipHeight y ClipWidth especifican coordenadas que están fuera de los límites del mapa de bits cargado en el control PictureClip.
32016 | picCellTooSmall | El tamaño de la celda es muy pequeño (debe tener al menos 1 x 1 píxeles).
32017 | picRowNotPositive | La propiedad Rows debe ser mayor que cero.
32018 | picColNotPositive | La propiedad Cols debe ser mayor que cero.
32019 | picStretchXNegative | La propiedad StretchX no puede ser negativa.
32020 | picStretchYNegative | La propiedad StretchY no puede ser negativa.
32021 | picNoPicture | No hay ninguna imagen asignada.


CellHeight, CellWidth (Propiedades, control PictureClip)

Devuelve el alto y el ancho, en píxeles, de la propiedad GraphicCell de un control PictureClip.

Sintaxis

objeto.CellHeight

objeto.CellWidth

El marcador de posición objeto representa una expresión de objeto que da como resultado un control PictureClip.

Comentarios

Las propiedades CellHeight y CellWidth dependen de las propiedades Cols y Rows de un control PictureClip. Por ejemplo, si se divide una imagen en cuatro columnas y cuatro filas se obtiene un GraphicCell cuyo tamaño es el doble que la misma imagen dividida en ocho columnas y ocho filas.


Clip (Propiedad, control PictureClip)

Devuelve un mapa de bits del área que está en el control PictureClip especificado mediante las propiedades ClipX, ClipY, ClipWidth y ClipHeight. Esta propiedad es de sólo lectura en tiempo de ejecución.

Sintaxis

[formulario.]PictureClip.Clip

Comentarios

Use esta propiedad para especificar una región de recorte aleatoria del mapa de bits seleccionado.

Cuando asigne una imagen Clip a un control de imagen en Visual Basic, asegúrese de que la propiedad ScaleMode del control de imagen tiene el valor 3 (píxeles). Debe usar píxeles porque las propiedades ClipHeight y ClipWidth que definen la región de recorte se miden en esta unidad.

Tipo de datos

Integer


ClipHeight (Propiedad, control PictureClip)

Especifica el alto de la sección del mapa de bits que va a copiar la propiedad Clip. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

[formulario.]PictureClip.ClipHeight[ = alto%]

Comentarios

Esta propiedad se mide en píxeles.

Tipo de datos

Integer


Ejemplo de la propiedad Clip (Control PictureClip)

Ejemplo de Visual Basic

El ejemplo siguiente presenta una imagen Clip en un cuadro con imagen cuando el usuario especifica las coordenadas X e Y, y a continuación, hace clic en un formulario. Cree primero un formulario con un PictureBox, un control PictureClip y dos controles TextBox. Durante el diseño, use la ventana Propiedades para cargar un mapa de bits válido en el control PictureClip.

Private Sub Form_Click ()
   Dim SaveMode As Integer
   ' Guarda el ScaleMode activo para el cuadro de
   ' imagen.
   SaveMode = Picture1.ScaleMode
   ' Obtiene las coordenadas X e Y de la región de
   ' recorte (en píxeles).
   PicClip1.ClipX = Val(Text1.Text)
   PicClip1.ClipY = Val(Text2.Text)
   ' Establece el área de la región de recorte
   ' (en píxeles).
   PicClip1.ClipHeight = 100
   PicClip1.ClipWidth = 100
   ' Asigna el valor ScaleMode del cuadro de imagen
   ' a píxeles.
   Picture1.ScaleMode = 3
   ' Establece el área de destino para llenar el
   ' cuadro de imagen.
   PicClip1.StretchX = Picture1.ScaleWidth
   PicClip1.StretchY = Picture1.ScaleHeight
   ' Asigna el mapa de bits recortado al cuadro
   ' de imagen.
   Picture1.Picture = PicClip1.Clip
   ' Restablece el valor ScaleMode del cuadro de imagen.
   Picture1.ScaleMode = SaveMode
End Sub


ClipWidth (Propiedad, control PictureClip)

Determina el ancho de la sección del mapa de bits que va a copiar la propiedad Clip. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

[formulario.]PictureClip.ClipWidth[ = ancho%]

Comentarios

Esta propiedad se mide en píxeles.

Tipo de dato

Integer


ClipX (Propiedad, control PictureClip)

Especifica la coordenada x de la esquina superior izquierda de la sección del mapa de bits que va a copiar la propiedad Clip. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

[formulario.]PictureClip.ClipX[ = x%]

Comentarios

Esta propiedad se mide en píxeles.

Tipo de dato

Integer


ClipY (Propiedad, control PictureClip)

Especifica la coordenada y de la esquina superior izquierda de la sección del mapa de bits que va a copiar la propiedad Clip. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

[formulario.]PictureClip.ClipY[ = y%]

Comentarios

Esta propiedad se mide en píxeles.

Tipo de dato

Integer


Cols, Rows (Propiedades, control PictureClip)

Establece o devuelve el número total de columnas o filas de la imagen.

Sintaxis

[formulario.]PictureClip.Cols[ = cols%]

[formulario.]PictureClip.Rows[ = filas%]

Comentarios

Use estas propiedades para dividir el mapa de bits de origen en una matriz uniforme de elementos de imagen. Use la propiedad GraphicCell para especificar elementos individuales.

Un control PictureClip debe tener al menos una columna y una fila.

El alto de cada elemento gráfico se determina dividiendo el alto del mapa de bits de origen entre el número de filas especificadas. Los píxeles que sobran en la parte inferior del mapa de bits de origen (a causa del redondeo a un entero) se recortan.

El ancho de cada elemento gráfico se determina dividiendo el ancho del mapa de bits de origen entre el número de columnas especificado. Los píxeles que sobran a la derecha del mapa de bits de origen (a causa del redondeo a un entero) se recortan.

Tipo de dato

Integer


GraphicCell (Propiedad, control PictureClip)

Una matriz unidimensional de imágenes que representa todos los elementos de una imagen. Esta propiedad no está disponible durante el diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

[formulario.]PictureClip.GraphicCell (índice%)

Comentarios

  • Use las propiedades Rows y Cols para dividir una imagen en una matriz uniforme de celdas gráficas.

  • Las celdas especificadas por la propiedad GraphicCell tienen índices, que comienzan en 0 y se incrementan de izquierda a derecha y de arriba abajo.

  • Al leer esta propiedad se genera un error si no hay ninguna imagen o si las propiedades Rows o Cols están establecidas a 0.

Tipo de dato

Integer


Height, Width (Propiedades, control PictureClip)

Devuelven el alto y el ancho (en píxeles) de un mapa de bits contenido en un control. Estas propiedades no están disponibles en tiempo de diseño y son de sólo lectura en tiempo de ejecución.

Sintaxis

[formulario.]PictureClip.Height

[formulario.]PictureClip.Width

Comentarios

Estas propiedades sólo son válidas cuando el control contiene un mapa de bits.

Puede cargar un mapa de bits en un control PictureClip en tiempo de diseño mediante la ventana Propiedades. En Visual Basic también puede cargar un mapa de bits en tiempo de ejecución en un control PictureClip mediante la función LoadPicture.

Tipo de dato

Integer


Picture (Propiedad, control PictureClip)

Esta propiedad es igual que la propiedad Picture estándar de Visual Basic, salvo que únicamente admite archivos de mapa de bits (.bmp).


StretchX, StretchY (Propiedades, control PictureClip)

Especifican el tamaño de destino para el mapa de bits creado mediante la propiedad Clip. Estas propiedades no están disponibles en tiempo de diseño.

Sintaxis

[formulario.]PictureClip.StretchX[ = x%]

[formulario.]PictureClip.StretchY[ = y%]

Comentarios

Use estas propiedades para definir el área a la que se va a copiar el mapa de bits recortado con Clip. Al copiar el mapa de bits, éste se expande o se contrae para que quepa en el área definida en StretchX y StretchY.

StretchX y StretchY se miden en píxeles.

Nota En Visual Basic, el valor predeterminado de ScaleMode para formularios y cuadros de imagen son los twips. Establezca ScaleMode = 3 (píxeles) para todos los controles que presentan imágenes desde un control PictureClip.

Tipo de datos

Integer