IWiaPreview::UpdatePreview 方法

获取 IWiaPreview::GetNewPreview 方法缓存的未筛选图像。

语法

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

参数

lOptions [in]

类型: LONG

指定应用程序是需要 WIA 2.0 预览组件将缓存图像的子区域还是整个缓存图像传递到图像处理筛选器。

WiaPreviewReturnOriginalImage

将整个缓存的图像传递到图像处理筛选器。

pChildWiaItem [in]

类型: IWiaItem2*

指定指向 IWiaItem2 项的指针,该项是由 IWiaPreview::GetNewPreview 方法的 pWiaItem2 参数指定的 IWiaItem2 项的子级。 或者,如果应用程序需要整个 flatbed 的预览,请指定指向 IWiaPreview::GetNewPreview 方法的 pWiaItem2 参数的指针。 当 pChildWiaItemIWiaPreview::GetNewPreviewpWiaItem2 参数的子项时,此子项通常由分段筛选器创建。

返回值

类型: HRESULT

如果此方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

备注

此方法通过图像处理筛选器传递缓存的未筛选图像,然后将筛选的数据写入应用程序提供的流。 WIA 2.0 预览组件通过调用图像处理筛选器的 GetNextStream 方法检索此流,该方法随后调用应用程序回调的 GetNextStream 实现。 在调用 IWiaPreview::UpdatePreview 之前,应用程序必须首先调用 IWiaPreview::GetNewPreview 以从扫描程序获取映像;否则, 方法将返回错误。

WIA 2.0 预览组件存储从驱动程序下载的未筛选映像。 传递到 IWiaPreview::UpdatePreview 的 WIA 2.0 项可能只代表从驱动程序下载的映像的一小部分。 如果是这种情况,WIA 2.0 预览组件在将缓存图像传递到图像处理筛选器之前,实际上会从缓存的图像中删除此区域,而后者又会将筛选的图像数据传递回应用程序。

若要使应用程序将整个缓存图像传递到图像处理筛选器 (后者又将其传递到应用程序) ,在调用 IWiaPreview::UpdatePreview 时,必须将 lOptions 设置为 WiaPreviewReturnOriginalImage。 将 lOptions 设置为 WiaPreviewReturnOriginalImage 时,应用程序必须确保盘区设置 (WIA_IPS_XEXTENT ,并且 WIA_IPS_YEXTENT 传递到 IWiaPreview::UpdatePreview 的项) 与完全缓存的映像匹配。 在这种情况下,图像处理筛选器不需要执行任何不同操作:它只是根据 pChildWiaItem (的属性筛选图像,在这种情况下 ,pChildWiaItem 是传递给 IWiaPreview::GetNewPreview) 的同一项。 忽略不同的子区域,并使用相同的设置筛选整个图像。 应用程序执行此操作的原因有多种。

  1. 应用程序可能不支持更改 (设置(如 WIA_IPS_BRIGHTNESSWIA_IPS_CONTRAST) )单独 (分段筛选器检测到的每个区域,或者它甚至可能不想使用分段筛选器) 。 应用程序可以更轻松地使用 WiaPreviewReturnOriginalImage 调用 IWiaPreview::UpdatePreview,以便它始终从 WIA 2.0 预览组件接收完整映像。
  2. WIA 2.0 预览组件不支持预览图像的图像格式,在这种情况下,它无法执行剪切所需区域的操作。 WIA 2.0 预览组件的图像格式支持仅限于有 Windows GDI+ 1.1 编码器和解码器的格式。 这些格式为位图 (BMP) (位图,其中包括 BITMAPFILEHEADER) 、图形交换格式 (GIF) 、JPEG、可移植网络图形 (PNG) ,以及标记图像文件格式 (TIFF) 。

请注意,如果应用程序将 WiaPreviewReturnOriginalImage 传递到 IWiaPreview::UpdatePreview,WIA 2.0 预览组件可以支持任何图像或像素格式。

IWiaPreview::UpdatePreview 设置 WIA_DPS_PREVIEW 属性 (,并在返回前重置属性,除非在) 之前设置。 这样,驱动程序 (和硬件) 以及图像处理筛选器即可知道该项是预览扫描。

应用程序必须确保 pChildWiaItem (WIA_IPA_FORMAT) 和分辨率 (WIA_IPS_XRESWIA_IPS_YRES) 与 pWiaItem 传递到 IWiaPreview::GetNewPreview 时的图像格式相同。 子项的格式必须对应于 WIA 2.0 预览组件的缓存图像的格式, (WIA 2.0 预览组件不执行图像转换) 。

示例

每次用户更改时,都应调用 UpdateRegion,例如,表示 dwRegionNumber的子项的亮度或对比度。 此子项以前是由分段筛选器 (IWiaSegmentationFilter 创建的。 写入 IStream 的图像由传输回调接口的 GetNextStream 方法返回。 此示例中省略了 GetSubRegionItem 的代码。

调用此函数后,应用程序通常会在屏幕上重新绘制区域。

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

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

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
Wia.h
IDL
Wia.idl