Método ID2D1Brush::SetTransform(constD2D1_MATRIX_3X2_F&) (d2d1.h)

Define a transformação aplicada ao pincel.

Sintaxe

void SetTransform(
  [ref] const D2D1_MATRIX_3X2_F & transform
);

Parâmetros

[ref] transform

Tipo: const D2D1_MATRIX_3X2_F

A transformação a ser aplicada a esse pincel.

Retornar valor

Nenhum

Comentários

Quando você pinta com um pincel, ele pinta no espaço de coordenadas do destino de renderização. Os pincéis não se posicionam automaticamente para se alinharem ao objeto que está sendo pintado; por padrão, eles começam a pintar na origem (0, 0) do destino de renderização.

Você pode "mover" o gradiente definido por um ID2D1LinearGradientBrush para uma área de destino definindo seu ponto de partida e ponto de extremidade. Da mesma forma, você pode mover o gradiente definido por um ID2D1RadialGradientBrush alterando o centro e o raio.

Para alinhar o conteúdo de um ID2D1BitmapBrush à área que está sendo pintada, você pode usar o método SetTransform para traduzir o bitmap para o local desejado. Essa transformação afeta apenas o pincel; ele não afeta nenhum outro conteúdo desenhado pelo destino de renderização.

As ilustrações a seguir mostram o efeito de usar um ID2D1BitmapBrush para preencher um retângulo localizado em (100, 100). A ilustração à esquerda mostra o resultado do preenchimento do retângulo sem transformar o pincel: o bitmap é desenhado na origem do destino de renderização. Como resultado, apenas uma parte do bitmap aparece no retângulo.

A ilustração à direita mostra o resultado da transformação do ID2D1BitmapBrush para que seu conteúdo seja deslocado 50 pixels para a direita e 50 pixels para baixo. O bitmap agora preenche o retângulo.

Ilustração de dois quadrados, um pintado com um bitmap sem um pincel transformado e outro pintado com um pincel transformado

Exemplos

Os exemplos de código a seguir mostram como criar a transformação mostrada no diagrama certo na ilustração anterior. Primeiro aplique uma tradução ao ID2D1BitmapBrush, movendo o pincel 50 pixels para a direita ao longo do eixo x e 50 pixels para baixo ao longo do eixo y. Em seguida, use o ID2D1BitmapBrush para preencher o retângulo que tem o canto superior esquerdo em (100, 100) e o canto inferior direito em (200, 200).

// Create the bitmap to be used by the bitmap brush.
if (SUCCEEDED(hr))
{
    hr = LoadResourceBitmap(
        m_pRenderTarget,
        m_pWICFactory,
        L"FERN",
        L"Image",
        &m_pBitmap
        );
   
}

if (SUCCEEDED(hr))
{
    hr = m_pRenderTarget->CreateBitmapBrush(
        m_pBitmap,
        &m_pBitmapBrush
        );
}

D2D1_RECT_F rcTransformedBrushRect = D2D1::RectF(100, 100, 200, 200);


 // Demonstrate the effect of transforming a bitmap brush.
 m_pBitmapBrush->SetTransform(
     D2D1::Matrix3x2F::Translation(D2D1::SizeF(50,50))
     );

 // To see the content of the rcTransformedBrushRect, comment
 // out this statement.
 m_pRenderTarget->FillRectangle(
     &rcTransformedBrushRect, 
     m_pBitmapBrush
     );

 m_pRenderTarget->DrawRectangle(rcTransformedBrushRect, m_pBlackBrush, 1, NULL);

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho d2d1.h
Biblioteca D2d1.lib
DLL D2d1.dll

Confira também

Visão geral de pincéis

ID2D1Brush