Como cortar com um retângulo de clipe de Axis-Aligned

Este tópico descreve como cortar uma imagem com um retângulo de clipe 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, consulteVisão geral das camadas.

Para cortar com um retângulo de clipe 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::P ushAxisAlignedClip para especificar um retângulo. Os comandos de renderização são recortados no retângulo.

  3. Pinte a imagem original.

  4. Chame ID2D1RenderTarget::P opAxisAlignedClip 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 no 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 é recortado

Para criar a imagem recortada, crie uma estrutura de retângulo 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 de Direct2D