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
É 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 |