Compartir a través de


Método IWiaPreview::UpdatePreview

Obtiene la imagen sin filtrar almacenada en caché por el método IWiaPreview::GetNewPreview .

Sintaxis

HRESULT UpdatePreview(
  [in] LONG      lOptions,
  [in] IWiaItem2 *pChildWiaItem
);

Parámetros

lOptions [in]

Tipo: LONG

Especifica si la aplicación requiere el componente de versión preliminar de WIA 2.0 para pasar una subregión de la imagen almacenada en caché o toda la imagen almacenada en caché al filtro de procesamiento de imágenes.

WiaPreviewReturnOriginalImage

Pase toda la imagen almacenada en caché al filtro de procesamiento de imágenes.

pChildWiaItem [in]

Tipo: IWiaItem2*

Especifica un puntero al elemento IWiaItem2 , que es un elemento secundario del elemento IWiaItem2 especificado por el parámetro pWiaItem2 del método IWiaPreview::GetNewPreview . O bien, si la aplicación requiere una vista previa de todo el plano, especifica un puntero al parámetro pWiaItem2 del método IWiaPreview::GetNewPreview . Cuando pChildWiaItem es un elemento secundario del parámetro pWiaPreview ::GetNewPreviewpWiaItem2 de pWiaItem2 , este elemento secundario se crea normalmente mediante el filtro de segmentación.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error HRESULT .

Comentarios

Este método pasa la imagen almacenada en caché y sin filtrar a través del filtro de procesamiento de imágenes, que después escribe los datos filtrados en la secuencia proporcionada por la aplicación. El componente de versión preliminar de WIA 2.0 recupera esta secuencia llamando al método GetNextStream del filtro de procesamiento de imágenes, que luego llama a la implementación getNextStream de la devolución de llamada de la aplicación. Antes de llamar a IWiaPreview::UpdatePreview, una aplicación primero debe llamar a IWiaPreview::GetNewPreview para adquirir la imagen del analizador; de lo contrario, el método devuelve un error.

El componente de versión preliminar de WIA 2.0 almacena la imagen sin filtrar descargada del controlador. Es posible que el elemento WIA 2.0 pasado a IWiaPreview::UpdatePreview represente solo una pequeña región de la imagen descargada del controlador. Si este es el caso, el componente de versión preliminar de WIA 2.0 realmente corta esta región de la imagen almacenada en caché antes de pasarla al filtro de procesamiento de imágenes, que a su vez pasa los datos de imagen filtrados a la aplicación.

Para que una aplicación pase toda la imagen almacenada en caché al filtro de procesamiento de imágenes (que, a su vez, lo pasa a la aplicación), debe establecer lOptions en WiaPreviewReturnOriginalImage al llamar a IWiaPreview::UpdatePreview. Al establecer lOptions en WiaPreviewReturnOriginalImage, la aplicación debe asegurarse de que la configuración de extensión (WIA_IPS_XEXTENT y WIA_IPS_YEXTENT) del elemento pasado a IWiaPreview::UpdatePreview coincide con la imagen almacenada en caché completa. El filtro de procesamiento de imágenes no necesita hacer nada diferente en este caso; simplemente filtra la imagen, basándose en las propiedades de pChildWiaItem (normalmente en este caso pChildWiaItem es el mismo elemento que se pasó a IWiaPreview::GetNewPreview). Las distintas subárboles se omiten y toda la imagen se filtra con la misma configuración. Hay un par de motivos por los que una aplicación lo haría.

  1. Es posible que la aplicación no admita cambiar la configuración (como WIA_IPS_BRIGHTNESS y WIA_IPS_CONTRAST) individualmente para cada región que el filtro de segmentación detecte (o incluso no quiera usar el filtro de segmentación). Es más fácil que la aplicación llame a IWiaPreview::UpdatePreview con WiaPreviewReturnOriginalImage para que siempre reciba la imagen completa del componente de versión preliminar de WIA 2.0.
  2. El componente de versión preliminar de WIA 2.0 no admite el formato de imagen de la imagen de vista previa, en cuyo caso no puede realizar las acciones para cortar la región deseada. La compatibilidad con el formato de imagen del componente de versión preliminar de WIA 2.0 se limita a los formatos para los que hay codificadores y descodificadores de Windows GDI+ 1.1. Estos formatos son mapa de bits (BMP) (un mapa de bits que incluye BITMAPFILEHEADER), formato de intercambio de gráficos (GIF), JPEG, gráficos de red portátiles (PNG) y formato de archivo de imagen etiquetado (TIFF).

Tenga en cuenta que si la aplicación pasa WiaPreviewReturnOriginalImage a IWiaPreview::UpdatePreview, el componente de vista previa wia 2.0 puede admitir cualquier formato de imagen o píxel.

IWiaPreview::UpdatePreview establece la propiedad WIA_DPS_PREVIEW (y la restablece antes de que se devuelva, a menos que se establezca antes). Esto permite que el controlador (y el hardware) así como el filtro de procesamiento de imágenes sepan que el elemento es un examen de vista previa.

Una aplicación debe asegurarse de que pChildWiaItem tiene el mismo formato de imagen (WIA_IPA_FORMAT) y resolución (WIA_IPS_XRES y WIA_IPS_YRES) que pWiaItem tenía cuando se pasó a IWiaPreview::GetNewPreview. El formato del elemento secundario debe corresponder al formato de la imagen almacenada en caché del componente de versión preliminar de WIA 2.0 (el componente de versión preliminar de WIA 2.0 no realiza ninguna conversión de imagen).

Ejemplos

Se debe llamar a UpdateRegion cada vez que un usuario cambia, por ejemplo, el brillo o el contraste del elemento secundario representado por dwRegionNumber. Este elemento secundario se ha creado anteriormente mediante el filtro de segmentación (IWiaSegmentationFilter). El método GetNextStream de la interfaz de devolución de llamada de transferencia devuelve la imagen escrita en IStream. El código de GetSubRegionItem se omite en este ejemplo.

Después de llamar a esta función, una aplicación normalmente volvería a dibujar la región en la pantalla.

HRESULT
UpdateRegion(
   IN  DWORD dwRegionNumber)
{
   IWiaItem2 *pSubRegion = GetSubRegionItem(dwRegionNumber);

   return m_pWiaPreview->UpdatePreview(0,pSubRegion);
}

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado
Wia.h
IDL
Wia.idl