Share via


Metodo ID2D1DeviceContext::SetTarget (d2d1_1.h)

Elenco di comandi o bitmap a cui verrà eseguito il rendering del contesto del dispositivo Direct2D .

Sintassi

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

Parametri

[in, optional] image

Tipo: ID2D1Image*

Elenco di comandi o superficie a cui verrà eseguito il rendering del contesto del dispositivo Direct2D.

Valore restituito

nessuno

Osservazioni

La destinazione può essere modificata in qualsiasi momento, incluso mentre il contesto è di disegno.

La destinazione può essere una bitmap creata con il flag D2D1_BITMAP_OPTIONS_TARGET oppure può essere un elenco di comandi. Altri tipi di immagini non possono essere impostati come destinazione. Ad esempio, non è possibile impostare l'output di un effetto come destinazione. Se la destinazione non è valida, il contesto immetterà lo stato di errore D2DERR_INVALID_TARGET .

Non è possibile usare SetTarget per eseguire il rendering in un elenco bitmap/comando da più contesti di dispositivo contemporaneamente. Un'immagine viene considerata "sottoposta a rendering" se è mai stata impostata in un contesto di dispositivo all'interno di un timepan BeginDraw EndDraw/. Se viene eseguito un tentativo di rendering in un'immagine tramite più contesti del dispositivo, tutti i contesti del dispositivo successivi dopo il primo immetteranno uno stato di errore.

I chiamanti che desiderano collegare un'immagine a un secondo contesto del dispositivo devono prima chiamare EndDraw nel primo contesto del dispositivo.

Ecco un esempio dell'ordine di chiamata corretto.

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

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

Ecco un esempio dell'ordine di chiamata non corretto.

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 La modifica della destinazione non modifica la bitmap da cui viene visualizzata una destinazione di rendering HWND, né modifica la bitmap da cui viene eseguito il rendering di un controller di dominio a/da.
 
Questa API semplifica l'uso di una bitmap come origine (ad esempio in DrawBitmap) e come destinazione contemporaneamente. Il tentativo di usare una bitmap come origine nello stesso contesto del dispositivo a cui è associato come destinazione inserisce il contesto del dispositivo nello stato di errore D2DERR_BITMAP_BOUND_AS_TARGET.

È accettabile avere un limite bitmap come bitmap di destinazione in più destinazioni di rendering contemporaneamente. Le applicazioni che eseguono questa operazione devono sincronizzare correttamente il rendering con Flush o EndDraw.

È possibile modificare la destinazione in qualsiasi momento, incluso mentre il contesto è di disegno.

È possibile impostare la destinazione su NULL, in cui le chiamate di disegno inserisce il contesto del dispositivo in uno stato di errore con D2DERR_WRONG_STATE. La chiamata a SetTarget con una destinazione NULL non ripristina la bitmap di destinazione originale nel contesto del dispositivo.

Se il contesto del dispositivo ha un HDC in sospeso, il contesto immetterà lo stato di errore D2DERR_WRONG_STATE . La destinazione non verrà modificata.

Se la bitmap e il contesto del dispositivo non si trovano nello stesso dominio di risorse, il contesto immetterà \ lo stato di errore. La destinazione non verrà modificata.

ID2D1RenderTarget::GetPixelSize restituisce le dimensioni della bitmap di destinazione corrente (o 0, 0) se non è presente alcun limite bitmap. ID2D1RenderTarget::GetSize restituisce le dimensioni dei pixel della bitmap corrente ridimensionata da DPI della destinazione di rendering. SetTarget non influisce sulla DPI della destinazione di rendering.

ID2D1RenderTarget::GetPixelFormat restituisce il formato pixel della bitmap di destinazione corrente (o DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN se non è presente alcuno).

ID2D1Bitmap::CopyFromRenderTarget copia dalla bitmap di destinazione attualmente associata.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 e Aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione d2d1_1.h
DLL D2d1.dll

Vedi anche

ID2D1Bitmap1

ID2D1DeviceContext

ID2D1DeviceContext::CreateBitmap

ID2D1DeviceContext::GetTarget