Ritaglio (DirectComposition)

Nota

Per le app in Windows 10, è consigliabile usare le API Windows.UI.Composition anziché DirectComposition. Per altre info, vedi Modernizzare l'app desktop usando il livello visivo.

Il ritaglio consente di visualizzare solo una parte di un albero visivo o visivo limitando il rendering dell'oggetto visivo o della struttura ad albero a una determinata area rettangolare. In questo argomento viene descritto il supporto di Microsoft DirectComposition per gli oggetti visivi di ritaglio. Include le sezioni seguenti:

Rettangolo di ritaglio

Un oggetto visivo ha una proprietà Clip che definisce un'area rettangolare o un rettangolo di ritaglio all'interno del contenuto bitmap dell'oggetto visivo. Quando viene eseguito il rendering dell'oggetto visivo sullo schermo, solo la parte del contenuto bitmap che si trova all'interno del rettangolo di ritaglio viene disegnata sullo schermo, mentre il contenuto che si estende all'esterno del rettangolo di ritaglio viene ritagliato (non disegnato). Per impostazione predefinita, la proprietà Clip include tutto il contenuto bitmap.

La proprietà Clip di un oggetto visivo si applica a tutti gli oggetti visivi figlio e discendenti. In altre parole, viene ritagliato anche qualsiasi contenuto figlio o discendente che non rientra nei limiti del rettangolo di ritaglio dell'elemento padre.

DirectComposition applica la proprietà Clip prima di applicare le proprietà OffsetX, OffsetY e Transform 2D, ma dopo aver applicato le proprietà Effect e 3D Transform. Ciò significa che le trasformazioni 2D, OffsetX e OffsetY influiscono sia sul contenuto visivo che sul rettangolo di ritaglio. Mentre le trasformazioni e gli effetti 3D non si applicano al rettangolo di ritaglio.

Ad esempio, quando si applica un offset o una trasformazione 2D, il rettangolo di ritaglio è interessato dalla matrice di trasformazione. L'aggiunta di un offset e una rotazione 2D (45 gradi) insieme a un rettangolo di ritaglio dell'angolo arrotondato determinerà questo risultato:

diagramma di visualizzazione dell'effetto di una trasformazione 2d su un rettangolo di ritaglio.

Quando si applica una trasformazione 3D "all'interno" del rettangolo di ritaglio, il rettangolo di ritaglio non è interessato dalla matrice di trasformazione. Anche quando si applica una rotazione attorno all'asse Z (in effetti uguale all'esempio precedente), il diagramma seguente è il risultato:

diagramma che mostra che una trasformazione 3d non influisce sulla clip rettangolo (l'oggetto visivo ruota all'interno del clip).

Si noti che l'oggetto visivo ruotato all'interno del clip perché la matrice 3D non viene applicata alla clip stessa.

Se la proprietà Clip è impostata su un rettangolo vuoto, l'oggetto visivo viene completamente ritagliato; ovvero, l'oggetto visivo è incluso nella struttura ad albero visuale, ma non esegue il rendering di alcun elemento. Se non si desidera includere un oggetto visivo specifico in una composizione, rimuovere l'oggetto visivo dalla struttura ad albero visuale anziché impostare un rettangolo di ritaglio vuoto. La rimozione dell'oggetto visivo comporta prestazioni migliori.

Impostare la proprietà Clip di un oggetto visivo usando il metodo IDCompositionVisual::SetClip . Questo metodo include overload che consentono di impostare il valore della proprietà Clip su un rettangolo statico o su un oggetto clip. Utilizzare un rettangolo statico se non è necessario modificare le dimensioni del rettangolo di ritaglio durante la durata dell'oggetto visivo. Se è necessario modificare le dimensioni o animare il rettangolo di ritaglio, utilizzare un oggetto clip.

Oggetto Clip

Un oggetto Clip è un oggetto COM (Component Object Model) che rappresenta un rettangolo di ritaglio. Per creare un oggetto clip, usare il metodo IDCompositionDevice::CreateRectangleClip e quindi usare l'interfaccia IDCompositionRectangleClip dell'oggetto per impostare le proprietà dell'oggetto. Un oggetto clip appena creato ha i valori minimi possibili per le proprietà Left e Top e i valori massimi possibili per le proprietà Right e Bottom, rendendolo in effetti un oggetto clip no-op. In altre parole, l'oggetto rappresenta un rettangolo di ritaglio che include l'intero contenuto bitmap di un oggetto visivo.

Un oggetto clip include un set di proprietà che consentono di specificare angoli arrotondati per l'oggetto clip. Le proprietà consentono di impostare il raggio x e il raggio y di ogni angolo dell'oggetto di ritaglio.

Rettangolo di clip animato

Puoi animare un rettangolo di ritaglio applicando oggetti animazione alle proprietà Left, Top, Right e Bottom di un oggetto clip. Utilizzare il metodo di overload IDCompositionVisual::SetClip(IDCompositionClip) per applicare il rettangolo clip animato alla proprietà Clip di un oggetto visivo.

Per altre informazioni sugli oggetti animazione, vedi Animazione.

Concetti relativi a DirectComposition

Come ritagliare con un oggetto Clip rettangolo