Como recortar com um retângulo de recorte alinhado ao eixo

Este tópico descreve como recortar uma imagem com um retângulo de recorte alinhado ao eixo. Essa abordagem produz apenas clipes retangulares, pois os limites de conteúdo são alinhados ao eixo do retângulo. Essa abordagem é mais eficiente do que usar camadas com os limites de conteúdo. Para obter mais informações, consulte Visão geral das camadas.

Para recortar com um retângulo de recorte alinhado ao eixo

  1. Carregue a imagem original de um recurso. Para obter informações sobre como carregar um bitmap, consulte Como carregar um bitmap de um recurso.

  2. Chame ID2D1RenderTarget::PushAxisAlignedClip para especificar um retângulo. Os comandos de renderização são recortados no retângulo.

  3. Pinte a imagem original.

  4. Chame ID2D1RenderTarget::PopAxisAlignedClip para remover o último clipe alinhado ao eixo do destino de renderização.

Por exemplo, na ilustração a seguir, o bitmap original à esquerda é de 200*130 pixels. O bitmap à direita é o bitmap original recortado ao retângulo de clipe alinhado ao eixo. As dimensões são (20, 20) a (100, 100).

ilustração de um bitmap de peixinho dourado antes e depois que o bitmap é cortado

Para criar a imagem recortada, crie uma estrutura retangular como a área de recorte. Chame PushAxisAlignedClip com a área de recorte e pinte a imagem original. Chame PopAxisAlignedClip para remover o clipe do destino de renderização. O código a seguir mostra como fazer isso.

pRT->PushAxisAlignedClip(
    D2D1::RectF(20, 20, 100, 100),
    D2D1_ANTIALIAS_MODE_PER_PRIMITIVE
    );

pRT->FillRectangle(D2D1::RectF(0, 0, 200, 133), m_pOriginalBitmapBrush);
pRT->PopAxisAlignedClip();

Referência do Direct2D