이 항목에서는 호환되는 A8 렌더링 대상의 기본 사항을 설명하고 이를 사용하는 방법의 예를 제공합니다.
호환되는 A8 렌더링 대상은 A8 픽셀 형식(DXGI_FORMAT_A8_UNORM)을 사용하는 호환되는 렌더링 대상(ID2D1BitmapRenderTarget)입니다. 호환되는 A8 렌더링 대상을 사용하여 애플리케이션의 성능을 개선하고 텍스트 애니메이션 중에 더 원활한 전환을 제공할 수 있습니다. 호환되는 A8 렌더링 대상은 다음을 개선하려고 할 때 특히 유용합니다.
변환, 회전, 배율 또는 색 변경과 같은 간단한 애니메이션만 포함하는 텍스트 또는 앤티앨리어스 기하 도형을 렌더링하는 애플리케이션의 프레임 속도입니다.
애니메이션 중에 텍스트가 늘어나고 감소하는 애플리케이션의 시각적 연속성입니다.
호환되는 A8 렌더링 대상을 만들려면 ID2D1RenderTarget::CreateCompatibleRenderTarget 메서드를 DXGI_FORMAT_A8_UNORM 픽셀 형식과 함께 사용하고 반환된 호환되는 렌더링 대상을 지정합니다. 픽셀 형식에 대한 자세한 내용은 지원되는 픽셀 형식 및 알파 모드 참조하세요.
예를 들어 다음 스크린샷에 표시된 텍스트에 효율적으로 애니메이션 효과를 주려면 호환되는 A8 렌더링 대상을 사용하여 텍스트를 불투명 마스크로 캐시합니다. 그런 다음 불투명 마스크에 변환을 적용하여 빠른 렌더링 결과를 얻을 수 있습니다.
다음 코드는 이 작업을 수행하는 방법을 보여줍니다. 호환되는 A8 렌더링 대상을 만들고, 해당 대상에서 비트맵을 검색한 다음, FillOpacityMask사용하여 비트맵을 렌더링합니다.
ID2D1BitmapRenderTarget *m_pOpacityRT;
// Create the compatible render target using desiredPixelSize to avoid
// blurriness issues caused by a fractional-pixel desiredSize.
D2D1_PIXEL_FORMAT alphaOnlyFormat = D2D1::PixelFormat(
DXGI_FORMAT_A8_UNORM,
D2D1_ALPHA_MODE_PREMULTIPLIED);
hr = m_pRT->CreateCompatibleRenderTarget(
NULL,
&maskPixelSize,
&alphaOnlyFormat,
D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE,
&m_pOpacityRT
);
D2D1_RECT_F destinationRect = D2D1::RectF(
roundedOffset.x,
roundedOffset.y,
roundedOffset.x + opacityRTSize.width,
roundedOffset.y + opacityRTSize.height
);
ID2D1Bitmap *pBitmap = NULL;
m_pOpacityRT->GetBitmap(&pBitmap);
pBitmap->GetDpi(&dpiX, &dpiY);
// The antialias mode must be set to D2D1_ANTIALIAS_MODE_ALIASED
// for this method to succeed. We've set this mode already though
// so no need to do it again.
m_pRT->FillOpacityMask(
pBitmap,
m_pBlackBrush,
D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL,
&destinationRect
);
pBitmap->Release();