CompositionNineGridBrush Klasse

Definition

Zeichnet ein SpriteVisual mit einem CompositionBrush, nachdem Nine-Grid Stretching auf den Inhalt des Quellpinsels angewendet wurde. Die Quelle der Neun-Raster-Dehnung kann von einem beliebigen CompositionBrush vom Typ CompositionColorBrush, CompositionSurfaceBrush oder einem CompositionEffectBrush verwendet werden.

public ref class CompositionNineGridBrush sealed : CompositionBrush
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 196608)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CompositionNineGridBrush final : CompositionBrush
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 196608)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionNineGridBrush : CompositionBrush
Public NotInheritable Class CompositionNineGridBrush
Inherits CompositionBrush
Vererbung
Object Platform::Object IInspectable CompositionObject CompositionBrush CompositionNineGridBrush
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 Anniversary Edition (eingeführt in 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v3.0)

Beispiele

Anwenden Nine-Grid Stretching auf ein Schaltflächenobjekt (CompositionSurfaceBrushSource)

private SpriteVisual CreateNineGridVisualFromImageSurface(ICompositionSurface imgSurface)
{
  CompositionSurfaceBrush sourceBrush = _compositor.CreateSurfaceBrush(imgSurface);

  // imgSurface is 50x50 pixels; nine-grid insets, as measured in the asset, are:
  // left = 1, top = 5, right = 10, bottom = 20 (in pixels)

  // create NineGridBrush to paint onto SpriteVisual
  CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();

  // set SurfaceBrush as Source to NineGridBrush
  ninegridBrush.Source = sourceBrush;

  // set Nine-Grid Insets
  ninegridBrush.SetInsets(1, 5, 10, 20);

  // set appropriate Stretch on SurfaceBrush for Center of Nine-Grid
  sourceBrush.Stretch = CompositionStretch.Fill;

  // create SpriteVisual and paint w/ NineGridBrush
  SpriteVisual visual = _compositor.CreateSpriteVisual();
  visual.Size = new Vector2(100, 75);
  visual.Brush = ninegridBrush;

  return visual;
}

Erstellen eines Volltonfarbrahmens (CompositionColorBrush-Quelle)

private SpriteVisual CreateBorderVisual(SpriteVisual childContent, float borderThickness, Color borderColor)
{
  SpriteVisual borderVisual = _compositor.CreateSpriteVisual();
  borderVisual.Size = childContent.Size + new Vector2(2 * borderThickness);

  // create NineGridBrush w/ ColorBrush Source
  CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();
  ninegridBrush.Source = _compositor.CreateColorBrush(borderColor);
  ninegridBrush.SetInsets(borderThickness);

  // opt out of drawing Center of Nine-Grid
  ninegridBrush.IsCenterHollow = true;

  // paint SpriteVisual w/ NineGridBrush
  borderVisual.Brush = ninegridBrush;

  // set child visual appropriately; manage size/scale changed events separately
  childContent.Offset = new Vector3(borderThickness, borderThickness, 0);
  borderVisual.Children.InsertAtTop(childContent);

  return borderVisual;
}

Verwenden von ExpressionAnimation zum dynamischen Aktualisieren von Insetskalen

private void CounterScaleInsets(SpriteVisual ninegridVisual)
{
  CompositionNineGridBrush ninegridBrush = (CompositionNineGridBrush)ninegridVisual.Brush;

  // use expressions to counter a scale transformation on visual so as to maintain a constant inset thickness
  ExpressionAnimation counterScaleXAnimation = _compositor.CreateExpressionAnimation("1/visual.Scale.X");
  counterScaleXAnimation.SetReferenceParameter("visual", ninegridVisual);

  ExpressionAnimation counterScaleYAnimation = _compositor.CreateExpressionAnimation("1/visual.Scale.Y"); 
  counterScaleYAnimation.SetReferenceParameter("visual", ninegridVisual);

  // start ExpressionAnimation on Nine-Grid InsetScales
  ninegridBrush.StartAnimation("LeftInsetScale", counterScaleXAnimation);
  ninegridBrush.StartAnimation("RightInsetScale", counterScaleXAnimation);

  ninegridBrush.StartAnimation("TopInsetScale", counterScaleYAnimation);
  ninegridBrush.StartAnimation("BottomInsetScale", counterScaleYAnimation);
}

Anwenden eines Effekts auf Nine-Grid Stretched-Inhalt (CompositionNineGridBrush als Eingabe auf ein CompositionEffectBrush)

private void DesaturateNineGridVisual(SpriteVisual ninegridVisual)
{
  // get the NineGridBrush that the SpriteVisual is painted with
  CompositionNineGridBrush ninegridBrush = (CompositionNineGridBrush)ninegridVisual.Brush;

  // get or define IGraphicsEffect
  var saturationEffect = new SaturationEffect
  {
    Saturation = 0f,
    Source = new CompositionEffectSourceParameter("source"),
  };

  // create EffectBrush from EffectFactory
  CompositionEffectFactory saturationFactory = _compositor.CreateEffectFactory(saturationEffect);
  CompositionEffectBrush saturationBrush = saturationFactory.CreateBrush();

  // input NineGridBrush to EffectBrush
  saturationBrush.SetSourceParameter("source", ninegridBrush);

  // paint SpriteVisual with EffectBrush (w/ NineGridBrush as source parameter)
  ninegridVisual.Brush = saturationBrush;
}

Anwenden Nine-Grid Stretching auf eine Deckkraftmaske (CompositionNineGridBrush als Eingabe auf ein CompositionMaskBrush)

private SpriteVisual CreateMaskedRoundedRectVisual(ICompositionSurface myRoundedRectMaskSurface)
{
  // ColorBrush to be set as MaskBrush.Source
  CompositionColorBrush colorBrush = _compositor.CreateColorBrush(Colors.Blue);

  // SurfaceBrush w/ opacity mask surface
  CompositionSurfaceBrush roundedRectBrush = _compositor.CreateSurfaceBrush(myRoundedRectMaskSurface);
  roundedRectBrush.Stretch = CompositionStretch.Fill; // stretch for center of nine-grid

  // NineGridBrush w/ insets on opacity mask surface
  CompositionNineGridBrush ninegridBrush = _compositor.CreateNineGridBrush();
  ninegridBrush.Source = roundedRectBrush;
  ninegridBrush.SetInsets(_cornerRadius); // the radius, in pixels, of the corner as specified on my opacity mask surface 

  // Create MaskBrush
  CompositionMaskBrush maskBrush = _compositor.CreateMaskBrush();
  maskBrush.Source = colorBrush;
  maskBrush.Mask = ninegridBrush;

  // Paint SpriteVisual with MaskBrush
  SpriteVisual sprite = _compositor.CreateSpriteVisual();
  sprite.Size = new Vector2(300, 200);
  sprite.Brush = maskBrush;
  return sprite;
}

Hinweise

Nine-Grid Dehnung bezieht sich auf die Partitionierung visueller Inhalte (der Inhalt des Quellpinsels, der auf eine SpriteVisual-Instanz gezeichnet werden soll) in ein Raster von neun Rechtecken, sodass die Größen der Eckrechtecke bei der Größenänderung beibehalten werden, wie im folgenden Diagramm dargestellt:

Strecken von neun Rasterabschnitten

Wenn die Größe eines mit einem CompositionNineGridBrush gezeichneten SpriteVisual geändert oder skaliert wird, Der linke und rechte Rand (Rechtecke 4 und 6) erstrecken sich entlang der vertikalen Achse, die rechte Rechte am oberen und unteren Rand (Rechtecke 2 und 8) erstrecken sich entlang der horizontalen Achse, und die Mitte (Rechteck 5) wird entlang beider Achsen gestreckt, während die Ecken (Rechtecke 1, 3, 7 und 9) nicht gestreckt werden.

Die Source-Eigenschaft von CompositionNineGridBrush akzeptiert Pinsel eines von zwei Typen:

Hinweise zur CompositionSurfaceBrush-Quelle

Insets werden als Pixelwerte angegeben, die im Koordinatenbereich der ICompositionSurface gemessen werden, die dem CompositionSurfaceBrush zugeordnet ist. Die Beziehung zwischen einer Imkoordinatenraum einer Fläche angegebenen Menge und der Einfassung, wie sie angezeigt wird, wenn sie auf einem SpriteVisual gezeichnet wird, sieht wie folgt aus:

Inset_Surface*InsetScale=Inset_SpriteVisual

The CompositionSurfaceBrush. Die Stretch-Eigenschaft gibt an, wie der Inhalt der Mitte des Nine-Grid gestreckt wird.

Strecken des Neun-Raster-Mittelpunkts

NineGridBrush-Insets, die für ein abgerundetes Rechteckobjekt mit CompositionStretch.Fill angegeben sind; Die Insets werden in Pixeln angegeben (gemessen im Koordinatenraum der ICompositionSurface, die das Objekt enthält).

CompositionNineGridBrush ist nicht dafür konzipiert, Nine-Grid Skalierung auf eine CompositionSurfaceBrush-Quelle anzuwenden, deren Transformation über eine der folgenden Eigenschaften angewendet wird:

  • CompositionSurfaceBrush.AnchorPoint
  • CompositionSurfaceBrush.CenterPoint
  • CompositionSurfaceBrush.Offset
  • CompositionSurfaceBrush.RotationAngle
  • CompositionSurfaceBrush.RotationAngleInDegrees
  • CompositionSurfaceBrush.Scale
  • CompositionSurfaceBrush.TransformMatrix Kein Pixelinhalt wird gezeichnet, wenn ein Transformationsvorgang auf die CompositionSurfaceBrush-Quelle auf einen CompositionNineGridBrush angewendet wird.

Anwenden Nine-Grid Stretching auf eine Deckkraftmaske

Der Inhalt der CompositionSurfaceBrush-Quelle kann auch eine Deckkraftmaskenoberfläche sein. Das resultierende CompositionNineGridBrush kann dann als Maske auf ein CompositionMaskBrush festgelegt werden. Dadurch kann der maskierte Inhalt wie gewünscht skaliert werden, während die Deckkraftmaske Nine-Grid Stretching unterliegt.

Ebenso kann die Quelle zu einem CompositionMaskBrush auch vom Typ CompositionNineGridBrush sein.

Anwenden eines Effekts auf CompositionNineGridBrush

Ein CompositionNineGridBrush kann als Quelle auf einen CompositionEffectBrush festgelegt werden, um eine IGraphics- oder Windows.UI.Composition.Effect-Eigenschaft auf den Nine-Grid Stretched-Inhalt anzuwenden.

Hinweise zur CompositionColorBrush-Quelle

In Verbindung mit der IsCenterHollow-Eigenschaft ermöglicht eine CompositionColorBrush-Quelle die Erstellung von Volltonrahmen. Beachten Sie, dass Einsets für eine CompositionColorBrush-Quelle im Koordinatenbereich des SpriteVisual selbst gemessen werden.

Hinweise zu Einsetstärke und Einsetskalierung

Die Einsetstärke eines CompositionNineGridBrush-Objekts ändert sich nicht, wenn die Size-Eigenschaft des zugeordneten SpriteVisual geändert wird.

Die Inset-Skalierungseigenschaften bieten einen Mechanismus zum Skalieren Nine-Grid Insets vom Koordinatenraum des Pinsels (z. B. Pixelraum für ein Bild) auf den des SpriteVisual. Für instance können die Inset-Skalierungseigenschaften verwendet werden, um die Einsetstärke als Reaktion auf die Skalierungstransformation zu steuern, die von der SpriteVisual-Transformation geerbt wird, auf die nineGridBrush gezeichnet wird, oder einem beliebigen Vorgänger in seiner visuellen Struktur (z. B. bei DPI-Skalierung usw.). In diesem Fall bietet ExpressionAnimations ein Mittel zum dynamischen Aktualisieren von Werten der Insetskalierung.

Eigenschaften

BottomInset

Einset vom unteren Rand des Quellinhalts, der die Stärke der unteren Zeile angibt. Der Standardwert ist 0.0f.

BottomInsetScale

Skalierung, die auf BottomInset angewendet werden soll. Der Standardwert ist 1.0f.

Comment

Eine Zeichenfolge, die dem CompositionObject zugeordnet werden soll.

(Geerbt von CompositionObject)
Compositor

Der Compositor , der zum Erstellen dieses CompositionObject verwendet wird.

(Geerbt von CompositionObject)
Dispatcher

Der Verteiler für das CompositionObject.

(Geerbt von CompositionObject)
DispatcherQueue

Ruft die DispatcherQueue für das CompostionObject ab.

(Geerbt von CompositionObject)
ImplicitAnimations

Die Auflistung impliziter Animationen, die an dieses Objekt angefügt sind.

(Geerbt von CompositionObject)
IsCenterHollow

Gibt an, ob die Mitte des Nine-Grid gezeichnet wird.

LeftInset

Einset vom linken Rand des Quellinhalts, der die Stärke der linken Spalte angibt. Der Standardwert ist 0.0f.

LeftInsetScale

Skalierung, die auf LeftInset angewendet werden soll. Der Standardwert ist 1.0f.

Properties

Die Auflistung der Eigenschaften, die dem CompositionObject zugeordnet sind.

(Geerbt von CompositionObject)
RightInset

Einset vom rechten Rand des Quellinhalts, der die Stärke der rechten Spalte angibt. Der Standardwert ist 0.0f.

RightInsetScale

Skalierung, die auf RightInset angewendet werden soll. Der Standardwert ist 1.0f.

Source

Der Pinsel, dessen Inhalt Nine-Grid gestreckt werden soll. Kann vom Typ CompositionSurfaceBrush oder CompositionColorBrush sein.

TopInset

Einset vom oberen Rand des Quellinhalts, der die Stärke der obersten Zeile angibt. Der Standardwert ist 0.0f.

TopInsetScale

Skalierung, die auf TopInset angewendet werden soll. Der Standardwert ist 1.0f.

Methoden

Close()

Schließt das CompositionObject und gibt Systemressourcen frei.

(Geerbt von CompositionObject)
ConnectAnimation(String, CompositionAnimation)

Verbindet und Animation.

(Geerbt von CompositionObject)
DisconnectAnimation(String)

Trennt eine Animation.

(Geerbt von CompositionObject)
Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

(Geerbt von CompositionObject)
PopulatePropertyInfo(String, AnimationPropertyInfo)

Definiert eine Eigenschaft, die animiert werden kann.

(Geerbt von CompositionObject)
SetInsets(Single)

Legt die Einsätze eines CompositionNineGridBrush-Elements mit demselben Wert für oben, unten, links und rechts fest. Der Standardwert ist 0.0f.

SetInsets(Single, Single, Single, Single)

Legt die Einsätze eines CompositionNineGridBrush-Elements unter Verwendung der angegebenen Werte für oben, unten, links und rechts fest. Der Standardwert ist 0.0f.

SetInsetScales(Single)

Legt die (gleiche) Skalierung fest, die auf die linken, oberen, rechten und unteren Einsätze angewendet werden soll. Der Standardwert ist 1.0f.

SetInsetScales(Single, Single, Single, Single)

Legt die Skalierung fest, die auf die linken, oberen, rechten und unteren Einsets angewendet werden soll. Der Standardwert ist 1.0f.

StartAnimation(String, CompositionAnimation)

Verbindet eine Animation mit der angegebenen Eigenschaft des Objekts und startet die Animation.

(Geerbt von CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

Verbindet eine Animation mit der angegebenen Eigenschaft des Objekts und startet die Animation.

(Geerbt von CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

Startet eine Animationsgruppe.

Mit der StartAnimationGroup-Methode für CompositionObject können Sie CompositionAnimationGroup starten. Alle Animationen in der Gruppe werden gleichzeitig für das Objekt gestartet.

(Geerbt von CompositionObject)
StopAnimation(String)

Trennt eine Animation von der angegebenen Eigenschaft und beendet die Animation.

(Geerbt von CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

Beendet eine Animationsgruppe.

(Geerbt von CompositionObject)
TryGetAnimationController(String)

Gibt einen AnimationController für die Animation zurück, die für die angegebene Eigenschaft ausgeführt wird.

(Geerbt von CompositionObject)

Gilt für:

Weitere Informationen