次の方法で共有


IWiaPreview::UpdatePreview メソッド

IWiaPreview::GetNewPreview メソッドによってキャッシュされたフィルター処理されていないイメージを取得します。

構文

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

パラメーター

lOptions [in]

型: LONG

キャッシュされたイメージのサブ領域またはキャッシュされたイメージ全体を画像処理フィルターに渡すために、アプリケーションで WIA 2.0 Preview コンポーネントが必要かどうかを指定します。

WiaPreviewReturnOriginalImage

キャッシュされたイメージ全体を画像処理フィルターに渡します。

pChildWiaItem [in]

種類: IWiaItem2*

IWiaPreview::GetNewPreview メソッドの pWiaItem2 パラメーターで指定された IWiaItem2 項目の子である IWiaItem2 項目へのポインターを指定します。 または、アプリケーションでフラットベッド全体のプレビューが必要な場合は、IWiaPreview::GetNewPreview メソッドの pWiaItem2 パラメーターへのポインターを指定します。 pChildWiaItemIWiaPreview::GetNewPreviewpWiaItem2 パラメーターの子である場合、この子項目は通常、セグメント化フィルターによって作成されます。

戻り値

種類: HRESULT

このメソッドが成功すると、 S_OKが返されます。 それ以外の場合は、 HRESULT エラー コードが返されます。

注釈

このメソッドは、キャッシュされたフィルター処理されていないイメージを画像処理フィルターを介して渡し、フィルター処理されたデータをアプリケーション提供のストリームに書き込みます。 WIA 2.0 Preview コンポーネントは、画像処理フィルターの GetNextStream メソッドを呼び出してこのストリームを取得し、アプリケーション コールバックの GetNextStream 実装を 呼び出します。 IWiaPreview::UpdatePreview を呼び出す前に、アプリケーションはまず IWiaPreview::GetNewPreview を呼び出してスキャナーからイメージを取得する必要があります。それ以外の場合、メソッドはエラーを返します。

WIA 2.0 Preview コンポーネントには、ドライバーからダウンロードされたフィルター処理されていないイメージが格納されます。 IWiaPreview::UpdatePreview に渡される WIA 2.0 項目は、ドライバーからダウンロードされたイメージの小さな領域のみを表している可能性があります。 この場合、WIA 2.0 Preview コンポーネントは実際にキャッシュされたイメージからこの領域を切り取ってから画像処理フィルターに渡し、フィルター処理された画像データをアプリケーションに渡します。

アプリケーションがキャッシュされたイメージ全体を画像処理フィルターに渡すには (その結果、アプリケーションに渡されます)、IWiaPreview::UpdatePreview を呼び出すときに lOptionsWiaPreviewReturnOriginalImage に設定する必要があります。 lOptionsWiaPreviewReturnOriginalImage に設定する場合、アプリケーションでは、IWiaPreview::UpdatePreview に渡されるアイテムのエクステント設定 (WIA_IPS_XEXTENTWIA_IPS_YEXTENT) が、完全にキャッシュされたイメージと一致していることを確認する必要があります。 この場合、画像処理フィルターは何も変える必要はありません。 pChildWiaItem のプロパティに基づいてイメージをフィルター処理するだけです (通常、この場合 、pChildWiaItemIWiaPreview::GetNewPreview に渡されたものと同じ項目です)。 異なるサブリージョンは無視され、同じ設定を使用してイメージ全体がフィルター処理されます。 アプリケーションでこれを行う理由がいくつかあります。

  1. アプリケーションでは、セグメント化フィルターが検出したリージョンごとに設定 ( WIA_IPS_BRIGHTNESSWIA_IPS_CONTRASTなど) を個別に変更できない場合があります (セグメント化フィルターを使用したくない場合もあります)。 WiaPreviewReturnOriginalImage を使用して IWiaPreview::UpdatePreview を呼び出す方が簡単なので、WIA 2.0 Preview コンポーネントから常に完全なイメージを受信できます。
  2. WIA 2.0 プレビュー コンポーネントはプレビュー イメージのイメージ形式をサポートしていません。その場合、目的のリージョンを切り取るアクションを実行できません。 WIA 2.0 プレビュー コンポーネントのイメージ形式のサポートは、Windows GDI+ 1.1 エンコーダーとデコーダーがある形式に限定されています。 これらの形式は、ビットマップ (BMP) (BITMAPFILEHEADER を含むビットマップ)、グラフィックス交換形式 (GIF)、JPEG、ポータブル ネットワーク グラフィックス (PNG)、およびタグ付きイメージ ファイル形式 (TIFF) です。

アプリケーションが WiaPreviewReturnOriginalImage をIWiaPreview::UpdatePreview に渡す場合、WIA 2.0 Preview コンポーネントは任意のイメージまたはピクセル形式をサポートできることに注意してください。

IWiaPreview::UpdatePreview、WIA_DPS_PREVIEW プロパティを設定します (以前に設定されていない限り、戻る前にリセットされます)。 これにより、ドライバー (およびハードウェア) と画像処理フィルターは、アイテムがプレビュー スキャンであることを認識できます。

アプリケーションでは、pChildWiaItemIWiaPreview::GetNewPreview に渡されたときと同じイメージ形式 (WIA_IPA_FORMAT) と解像度 (WIA_IPS_XRESWIA_IPS_YRES) を持っていることを確認する必要があります。 子項目の形式は、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 [デスクトップ アプリのみ]
Header
Wia.h
IDL
Wia.idl