Condividi tramite


UIElement.RenderTransformOrigin Proprietà

Definizione

Ottiene o imposta il punto di origine di qualsiasi possibile trasformazione di rendering dichiarata da RenderTransform, rispetto ai limiti dell'oggetto UIElement.

public:
 property Point RenderTransformOrigin { Point get(); void set(Point value); };
Point RenderTransformOrigin();

void RenderTransformOrigin(Point value);
public Point RenderTransformOrigin { get; set; }
var point = uIElement.renderTransformOrigin;
uIElement.renderTransformOrigin = point;
Public Property RenderTransformOrigin As Point
<uiElement RenderTransformOrigin="x,y"/>

Valore della proprietà

Punto di origine della trasformazione di rendering. Il valore predefinito è un valore Point con valore 0,0.

Esempio

Questo esempio XAML mostra come impostare RenderTransformOrigin sull'elemento nel codice XAML iniziale. Un'animazione eseguita su un oggetto CompositeTransform predefinito inizialmente può usare RenderTransformOrigin per modificare sia la scala che ruotare le trasformazioni da applicare al centro dei cerchi anziché all'origine della coordinata 0,0 predefinita. Ciò lo rende come se il cerchio gira intorno al suo centro e si compatta in posizione.

Nota

Per avviare l'animazione è necessario recuperarla da Risorse e chiamare Begin; tale codice non viene visualizzato.

<Ellipse x:Name="e1" RenderTransformOrigin=".5,.5" Height="100" Width="100" Loaded="e1_Loaded_1">
    <Ellipse.Fill>
        <LinearGradientBrush>
            <GradientStop Color="Red" Offset="0"/>
            <GradientStop Color="Green" Offset="1"/>
        </LinearGradientBrush>
    </Ellipse.Fill>
    <Ellipse.RenderTransform>
        <CompositeTransform />
    </Ellipse.RenderTransform>
    <Ellipse.Resources>
        <Storyboard x:Name="esb1" >
            <DoubleAnimation RepeatBehavior="3x" Duration="0:0:3" From="0" To="360" Storyboard.TargetName="e1" 
              Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" />
            <DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1" 
              Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" />
            <DoubleAnimation RepeatBehavior="1x" Duration="0:0:7" From="1" To="0" Storyboard.TargetName="e1" 
              Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" />
        </Storyboard>
    </Ellipse.Resources>
</Ellipse>

Commenti

RenderTransformOrigin consente di creare o modificare l'effetto di una trasformazione su un particolare elemento senza dover modificare le specifiche della trasformazione RenderTransform . Il valore Point specificato per RenderTransformOrigin non è basato sulle misure pixel effettive. Si tratta invece di un punto logico, in cui un valore pari a 0,0 fa riferimento all'angolo superiore sinistro dell'area di rendering generale di UIElement e 1,1 fa riferimento al lato inferiore destro. Il valore viene quindi valutato in una coordinata X,Y inserendola nello spazio delle coordinate corrente di UIElement.

Per alcune trasformazioni, l'origine non è importante. Ad esempio, RenderTransformOrigin non modifica il comportamento di un oggetto TranslateTransform applicato alla proprietà RenderTransform .

Alcuni tipi di trasformazione hanno proprietà proprie per specificare l'origine della trasformazione. Ad esempio, RotateTransform ha CenterX e CenterY. Quando si usa un oggetto UIElement, gli strumenti di progettazione visiva talvolta nascondono queste altre proprietà in modo da usare solo RenderTransformOrigin per tutte le modifiche all'origine di trasformazione e lasciare le origini specifiche della trasformazione come predefinite. Gli strumenti possono anche applicare tutti gli effetti di trasformazione a un singolo valore CompositeTransform per RenderTransform, anziché definire gli elementi XAML per le trasformazioni specifiche e creare un oggetto TransformGroup. Se si scrivono trasformazioni XAML personalizzate o si definiscono trasformazioni nel codice, è possibile seguire queste stesse procedure in modo da usare sempre RenderTransformOrigin anziché i valori di origine specifici della trasformazione se si applicano trasformazioni per RenderTransform, altrimenti i valori si sfalseranno tra loro.

Una tecnica comune consiste nell'impostare RenderTransformOrigin su 0.5.0.5, che colloca l'origine al centro dell'elemento. È quindi possibile applicare un oggetto RotateTransform per ruotare l'elemento intorno al centro.

La modifica di FlowDirection in RightToLeft modifica il significato della coordinata X di un Oggetto RenderTransformOrigin per un oggetto UIElement; 0 sarà il bordo destro.

Alcuni degli stessi effetti visivi che è possibile produrre con RenderTransform e RenderTransformOrigin possono essere ottenuti anche con Projection e planeProjection. Ad esempio, è possibile ruotare un OGGETTO UIElement intorno al centro modificando PlaneProjection.RotationZ.

Si applica a

Vedi anche