CompositionNineGridBrush Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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:
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:
- CompositionSurfaceBrush: Wenden Sie Nine-Grid Stretching auf eine texturierte Bildoberfläche an.
- CompositionColorBrush: Erstellen sie vollfarbige Farbrahmen.
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.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für