Compartilhar via


Método ID2D1DeviceContext::SetTarget (d2d1_1.h)

O bitmap ou a lista de comandos para a qual o contexto do dispositivo Direct2D será renderizado agora.

Sintaxe

void SetTarget(
  [in, optional] ID2D1Image *image
);

Parâmetros

[in, optional] image

Tipo: ID2D1Image*

A lista de comandos ou superfície para a qual o Direct2D contexto do dispositivo será renderizado.

Retornar valor

Nenhum

Comentários

O destino pode ser alterado a qualquer momento, inclusive enquanto o contexto está sendo desenhado.

O destino pode ser um bitmap criado com o sinalizador D2D1_BITMAP_OPTIONS_TARGET ou pode ser uma lista de comandos. Outros tipos de imagens não podem ser definidos como um destino. Por exemplo, você não pode definir a saída de um efeito como destino. Se o destino não for válido, o contexto entrará no estado de erro D2DERR_INVALID_TARGET .

Você não pode usar SetTarget para renderizar em uma lista de bitmap/comando de vários contextos de dispositivo simultaneamente. Uma imagem será considerada "sendo renderizada para" se ela já tiver sido definida em um contexto de dispositivo em um intervalo de tempo BeginDraw/EndDraw . Se for feita uma tentativa de renderização para uma imagem por meio de vários contextos de dispositivo, todos os contextos de dispositivo subsequentes após o primeiro entrarão em um estado de erro.

Os chamadores que desejam anexar uma imagem a um segundo contexto de dispositivo devem primeiro chamar EndDraw no primeiro contexto do dispositivo.

Aqui está um exemplo da ordem de chamada correta.

pDC1->BeginDraw();
pDC1->SetTarget(pImage);
// …
pDC1->EndDraw();

pDC2->BeginDraw();
pDC2->SetTarget(pImage);
// …
pDC2->EndDraw();

Aqui está um exemplo da ordem de chamada incorreta.

pDC1->BeginDraw();
pDC2->BeginDraw();

pDC1->SetTarget(pImage);

// ...

pDC1->SetTarget(NULL);

pDC2->SetTarget(pImage); // This call is invalid, even though pImage is no longer set on pDC1.

// ...

pDC1->EndDraw(); // This EndDraw SUCCEEDs.
pDC2->EndDraw(); // This EndDraw FAILs


Nota A alteração do destino não altera o bitmap do qual um destino de renderização HWND apresenta, nem altera o bitmap do qual um dc renderiza blts de/para.
 
Essa API facilita o uso de um aplicativo como fonte (como no DrawBitmap) e como um destino ao mesmo tempo. Tentar usar um bitmap como uma origem no mesmo contexto de dispositivo ao qual ele está associado como destino colocará o contexto do dispositivo no estado de erro D2DERR_BITMAP_BOUND_AS_TARGET.

É aceitável ter um bitmap associado como um bitmap de destino em vários destinos de renderização ao mesmo tempo. Os aplicativos que fazem isso devem sincronizar corretamente a renderização com Flush ou EndDraw.

Você pode alterar o destino a qualquer momento, inclusive enquanto o contexto está sendo desenhado.

Você pode definir o destino como NULL; nesse caso, as chamadas de desenho colocarão o contexto do dispositivo em um estado de erro com D2DERR_WRONG_STATE. Chamar SetTarget com um destino NULL não restaura o bitmap de destino original para o contexto do dispositivo.

Se o contexto do dispositivo tiver um HDC pendente, o contexto entrará no estado de erro D2DERR_WRONG_STATE . O destino não será alterado.

Se o bitmap e o contexto do dispositivo não estiverem no mesmo domínio de recurso, o contexto entrará no \ estado de erro. O destino não será alterado.

ID2D1RenderTarget::GetPixelSize retornará o tamanho do bitmap de destino atual (ou 0, 0) se não houver nenhum limite de bitmap). ID2D1RenderTarget::GetSize retorna o tamanho do pixel do bitmap atual dimensionado pela DPI do destino de renderização. SetTarget não afeta o DPI do destino de renderização.

ID2D1RenderTarget::GetPixelFormat retorna o formato de pixel do bitmap de destino atual (ou DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN se não houver nenhum).

ID2D1Bitmap::CopyFromRenderTarget copia do bitmap de destino associado no momento.

Requisitos

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

Confira também

ID2D1Bitmap1

ID2D1DeviceContext

ID2D1DeviceContext::CreateBitmap

ID2D1DeviceContext::GetTarget