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 パラメーターへのポインターを指定します。 pChildWiaItem が IWiaPreview::GetNewPreview の pWiaItem2 パラメーターの子である場合、この子項目は通常、セグメント化フィルターによって作成されます。
戻り値
種類: 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 を呼び出すときに lOptions を WiaPreviewReturnOriginalImage に設定する必要があります。 lOptions を WiaPreviewReturnOriginalImage に設定する場合、アプリケーションでは、IWiaPreview::UpdatePreview に渡されるアイテムのエクステント設定 (WIA_IPS_XEXTENTとWIA_IPS_YEXTENT) が、完全にキャッシュされたイメージと一致していることを確認する必要があります。 この場合、画像処理フィルターは何も変える必要はありません。 pChildWiaItem のプロパティに基づいてイメージをフィルター処理するだけです (通常、この場合 、pChildWiaItem は IWiaPreview::GetNewPreview に渡されたものと同じ項目です)。 異なるサブリージョンは無視され、同じ設定を使用してイメージ全体がフィルター処理されます。 アプリケーションでこれを行う理由がいくつかあります。
- アプリケーションでは、セグメント化フィルターが検出したリージョンごとに設定 ( WIA_IPS_BRIGHTNESS や WIA_IPS_CONTRASTなど) を個別に変更できない場合があります (セグメント化フィルターを使用したくない場合もあります)。 WiaPreviewReturnOriginalImage を使用して IWiaPreview::UpdatePreview を呼び出す方が簡単なので、WIA 2.0 Preview コンポーネントから常に完全なイメージを受信できます。
- 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 プロパティを設定します (以前に設定されていない限り、戻る前にリセットされます)。 これにより、ドライバー (およびハードウェア) と画像処理フィルターは、アイテムがプレビュー スキャンであることを認識できます。
アプリケーションでは、pChildWiaItem が IWiaPreview::GetNewPreview に渡されたときと同じイメージ形式 (WIA_IPA_FORMAT) と解像度 (WIA_IPS_XRESとWIA_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 |
|
IDL |
|