IWICProgressiveLevelControl::SetCurrentLevel 方法 (wincodec.h)

指定要在下一次调用 CopyPixels 时检索的级别。

语法

HRESULT SetCurrentLevel(
  [in] UINT nLevel
);

参数

[in] nLevel

类型: UINT

指定要下一步返回的级别。 如果大于支持的级别总数,将返回错误。

返回值

类型: HRESULT

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

注解

调用不必请求支持的每个级别。 如果调用方请求级别 1,但没有以前请求的级别 0,则下一次调用 CopyPixels 返回的位将包括这两个级别。

如果请求的级别无效,则返回的错误 WINCODEC_ERR_INVALIDPROGRESSIVELEVEL

示例

用户应使用此方法循环访问渐进 JPEG 图像的渐进级别,而不是 GetCurrentLevel 方法。 JPEG 渐进式级别由映像确定,没有固定的级别计数。 使用 GetCurrentLevel 方法将强制应用程序等待下载所有渐进级别,然后才能返回。 相反,应用程序应使用以下代码循环访问渐进式 JPEG 映像的渐进级别。

IWICProgressiveLevelControl *pProgressive = NULL;

HRESULT hr = (pBitmapFrame->QueryInterface(
   IID_IWICProgressiveLevelControl, 
   (void**) &pProgressive));
                
if (SUCCEEDED(hr))
{
   for (UINT uCurrentLevel = 0; SUCCEEDED(hr); uCurrentLevel++)
   {
      hr = pProgressive->SetCurrentLevel(uCurrentLevel);
      if (WINCODEC_ERR_INVALIDPROGRESSIVELEVEL == hr)
      {
         // No more levels
         break;
      }

      if (SUCCEEDED(hr))
      {
         // Output the current level
         hr = pBitmapFrame->CopyPixels(...);
      }                      
   }
}

if (pProgressive)
{
   pProgressive->Release();
}	

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 wincodec.h
DLL Windowscodecs.dll

另请参阅

IWICProgressiveLevelControl

渐进式解码概述