Kompositionspinsel
Alles, was von einer UWP-Anwendung auf dem Bildschirm angezeigt wird, ist sichtbar, da es von einem Pinsel gezeichnet wurde. Mit Pinsel können Sie Benutzeroberflächenobjekte mit Inhalten zeichnen, die von einfachen Volltonfarben über Bilder oder Zeichnungen bis hin zu komplexen Effektketten reichen. In diesem Thema werden die Konzepte des Malens mit CompositionBrush vorgestellt.
Hinweis: Bei der Arbeit mit der XAML-UWP-App können Sie ein UIElement mit einem XAML-Pinsel oder einem CompositionBrush malen. In der Regel ist es einfacher und ratsam, einen XAML-Pinsel auszuwählen, wenn Ihr Szenario von einem XAML-Pinsel unterstützt wird. Beispiel: Animieren der Farbe einer Schaltfläche, Ändern der Füllung eines Texts oder einer Form mit einem Bild. Wenn Sie dagegen versuchen, etwas zu tun, das von einem XAML-Pinsel nicht unterstützt wird, z. B. das Malen mit einer animierten Maske, einer animierten Neun-Raster-Stretch oder einer Effektkette, können Sie einen CompositionBrush verwenden, um ein UIElement mithilfe von XamlCompositionBrushBase zu zeichnen.
Wenn Sie mit der Visual-Ebene arbeiten, muss ein CompositionBrush verwendet werden, um den Bereich eines SpriteVisual zu zeichnen.
- Voraussetzungen
- Malen mit CompositionBrush
- Malen mit Volltonfarbe
- Zeichnen mit einem linearen Farbverlauf
- Paint mit radialem Farbverlauf
- Malen mit einem Bild
- Zeichnen mit einer benutzerdefinierten Zeichnung
- Zeichnen mit einem Video
- Paint mit einem Filtereffekt
- Zeichnen mit einem CompositionBrush mit einer Deckkraftmaske
- Zeichnen mit einem CompositionBrush mit NineGrid Stretch
- Zeichnen mit Hintergrundpixeln
- Kombinieren von CompositionBrushes
- Verwenden eines XAML-Pinsels im Vergleich zu CompositionBrush
- Verwandte Themen
Voraussetzungen
In dieser Übersicht wird davon ausgegangen, dass Sie mit der Struktur einer einfachen Kompositionsanwendung vertraut sind, wie in der Übersicht über die visuelle Ebene beschrieben.
Zeichnen mit einem CompositionBrush
Ein CompositionBrush "zeichnet" einen Bereich mit seiner Ausgabe. Verschiedene Pinsel haben unterschiedliche Ausgabetypen. Einige Pinsel zeichnen einen Bereich mit einer Volltonfarbe, andere mit einem Farbverlauf, einem Bild, einer benutzerdefinierten Zeichnung oder einem Effekt. Es gibt auch spezielle Pinsel, die das Verhalten anderer Pinsel ändern. Beispielsweise kann die Deckkraftmaske verwendet werden, um zu steuern, welcher Bereich von einem CompositionBrush gezeichnet wird, oder ein Neunraster kann verwendet werden, um die Dehnung zu steuern, die beim Zeichnen eines Bereichs auf einen CompositionBrush angewendet wird. CompositionBrush kann einen der folgenden Typen aufweisen:
Klasse | Details | Eingeführt in |
---|---|---|
CompositionColorBrush | Zeichnet einen Bereich mit einer Volltonfarbe | Windows 10, Version 1511 (SDK 10586) |
CompositionSurfaceBrush | Zeichnet einen Bereich mit dem Inhalt einer ICompositionSurface | Windows 10, Version 1511 (SDK 10586) |
CompositionEffectBrush | Zeichnet einen Bereich mit dem Inhalt eines Kompositionseffekts | Windows 10, Version 1511 (SDK 10586) |
CompositionMaskBrush | Zeichnet ein Visual mit einem CompositionBrush mit einer Deckkraftmaske | Windows 10, Version 1607 (SDK 14393) |
CompositionNineGridBrush | Zeichnet einen Bereich mit einem CompositionBrush mithilfe einer NineGrid-Stretch | Windows 10, Version 1607 (SDK 14393) |
CompositionLinearGradientBrush | Zeichnet einen Bereich mit einem linearen Farbverlauf | Windows 10, Version 1709 (SDK 16299) |
CompositionRadialGradientBrush | Zeichnet einen Bereich mit einem radialen Farbverlauf | Windows 10, Version 1903 (Insider Preview SDK) |
CompositionBackdropBrush | Zeichnet einen Bereich, indem Hintergrundpixel aus der Anwendung oder pixeln direkt hinter dem Fenster der Anwendung auf dem Desktop erfasst werden. Wird als Eingabe für einen anderen CompositionBrush wie ein CompositionEffectBrush verwendet. | Windows 10, Version 1607 (SDK 14393) |
Malen mit Volltonfarbe
Ein CompositionColorBrush zeichnet einen Bereich mit einer Volltonfarbe. Es gibt eine Vielzahl von Möglichkeiten, die Farbe eines SolidColorBrush anzugeben. Beispielsweise können Sie die Alpha-, Rot-, Blau- und Grünkanäle (ARGB) angeben oder eine der vordefinierten Farben verwenden, die von der Colors-Klasse bereitgestellt werden.
Die Abbildung und der Code zeigen im Folgenden eine kleine visuelle Struktur. Es wird ein Rechteck erstellt, dessen Konturen mit einem schwarzen Pinsel gezeichnet sind und das mit einem Pinsel in Volltonfarbe ausgefüllt ist, die den Farbwert „0x9ACD32“ hat.
Compositor _compositor;
ContainerVisual _container;
SpriteVisual _colorVisual1, _colorVisual2;
CompositionColorBrush _blackBrush, _greenBrush;
_compositor = Window.Current.Compositor;
_container = _compositor.CreateContainerVisual();
_blackBrush = _compositor.CreateColorBrush(Colors.Black);
_colorVisual1= _compositor.CreateSpriteVisual();
_colorVisual1.Brush = _blackBrush;
_colorVisual1.Size = new Vector2(156, 156);
_colorVisual1.Offset = new Vector3(0, 0, 0);
_container.Children.InsertAtBottom(_colorVisual1);
_ greenBrush = _compositor.CreateColorBrush(Color.FromArgb(0xff, 0x9A, 0xCD, 0x32));
_colorVisual2 = _compositor.CreateSpriteVisual();
_colorVisual2.Brush = _greenBrush;
_colorVisual2.Size = new Vector2(150, 150);
_colorVisual2.Offset = new Vector3(3, 3, 0);
_container.Children.InsertAtBottom(_colorVisual2);
Zeichnen mit einem linearen Farbverlauf
Ein CompositionLinearGradientBrush zeichnet einen Bereich mit einem linearen Farbverlauf. Ein linearer Farbverlauf blendet zwei oder mehr Farben über eine Linie hinweg, die Farbverlaufsachse. Sie verwenden GradientStop-Objekte, um die Farben im Farbverlauf und deren Positionen anzugeben.
Die folgende Abbildung und der Code zeigen einen SpriteVisual, der mit einem LinearGradientBrush mit 2 Stopps in roter und gelber Farbe gezeichnet wurde.
Compositor _compositor;
SpriteVisual _gradientVisual;
CompositionLinearGradientBrush _redyellowBrush;
_compositor = Window.Current.Compositor;
_redyellowBrush = _compositor.CreateLinearGradientBrush();
_redyellowBrush.ColorStops.Add(_compositor.CreateColorGradientStop(0, Colors.Red));
_redyellowBrush.ColorStops.Add(_compositor.CreateColorGradientStop(1, Colors.Yellow));
_gradientVisual = _compositor.CreateSpriteVisual();
_gradientVisual.Brush = _redyellowBrush;
_gradientVisual.Size = new Vector2(156, 156);
Paint mit radialem Farbverlauf
Ein CompositionRadialGradientBrush zeichnet einen Bereich mit einem radialen Farbverlauf. Ein radialer Farbverlauf mischt zwei oder mehr Farben mit dem Farbverlauf ab der Mitte der Ellipse und endet am Radius der Ellipse. GradientStop-Objekte werden verwendet, um die Farben und deren Position im Farbverlauf zu definieren.
Die folgende Abbildung und der Code zeigen einen SpriteVisual, der mit einem RadialGradientBrush mit 2 GradientStops gezeichnet wurde.
Compositor _compositor;
SpriteVisual _gradientVisual;
CompositionRadialGradientBrush RGBrush;
_compositor = Window.Current.Compositor;
RGBrush = _compositor.CreateRadialGradientBrush();
RGBrush.ColorStops.Add(_compositor.CreateColorGradientStop(0, Colors.Aquamarine));
RGBrush.ColorStops.Add(_compositor.CreateColorGradientStop(1, Colors.DeepPink));
_gradientVisual = _compositor.CreateSpriteVisual();
_gradientVisual.Brush = RGBrush;
_gradientVisual.Size = new Vector2(200, 200);
Malen mit einem Bild
Ein CompositionSurfaceBrush zeichnet einen Bereich mit Pixeln, die auf eine ICompositionSurface gerendert werden. Beispielsweise kann ein CompositionSurfaceBrush verwendet werden, um einen Bereich mit einem Bild zu zeichnen, das mithilfe der LoadedImageSurface-API auf einer ICompositionSurface-Oberfläche gerendert wird.
Die folgende Abbildung und der Code zeigen einen SpriteVisual, der mit einer Bitmap einer Lakritze gezeichnet wurde, die mithilfe von LoadedImageSurface auf eine ICompositionSurface gerendert wurde. Die Eigenschaften von CompositionSurfaceBrush können verwendet werden, um die Bitmap innerhalb der Grenzen des Visuals zu strecken und auszurichten.
Compositor _compositor;
SpriteVisual _imageVisual;
CompositionSurfaceBrush _imageBrush;
_compositor = Window.Current.Compositor;
_imageBrush = _compositor.CreateSurfaceBrush();
// The loadedSurface has a size of 0x0 till the image has been been downloaded, decoded and loaded to the surface. We can assign the surface to the CompositionSurfaceBrush and it will show up once the image is loaded to the surface.
LoadedImageSurface _loadedSurface = LoadedImageSurface.StartLoadFromUri(new Uri("ms-appx:///Assets/licorice.jpg"));
_imageBrush.Surface = _loadedSurface;
_imageVisual = _compositor.CreateSpriteVisual();
_imageVisual.Brush = _imageBrush;
_imageVisual.Size = new Vector2(156, 156);
Zeichnen mit einer benutzerdefinierten Zeichnung
Ein CompositionSurfaceBrush kann auch verwendet werden, um einen Bereich mit Pixeln aus einer ICompositionSurface zu zeichnen, die mit Win2D (oder D2D) gerendert wurde.
Der folgende Code zeigt eine SpriteVisual-Gezeichnete mit einer Textausführung, die mithilfe von Win2D auf eine ICompositionSurface gerendert wird. Hinweis: Um Win2D verwenden zu können, müssen Sie das Win2D-NuGet-Paket in Ihr Projekt einschließen.
Compositor _compositor;
CanvasDevice _device;
CompositionGraphicsDevice _compositionGraphicsDevice;
SpriteVisual _drawingVisual;
CompositionSurfaceBrush _drawingBrush;
_device = CanvasDevice.GetSharedDevice();
_compositionGraphicsDevice = CanvasComposition.CreateCompositionGraphicsDevice(_compositor, _device);
_drawingBrush = _compositor.CreateSurfaceBrush();
CompositionDrawingSurface _drawingSurface = _compositionGraphicsDevice.CreateDrawingSurface(new Size(256, 256), DirectXPixelFormat.B8G8R8A8UIntNormalized, DirectXAlphaMode.Premultiplied);
using (var ds = CanvasComposition.CreateDrawingSession(_drawingSurface))
{
ds.Clear(Colors.Transparent);
var rect = new Rect(new Point(2, 2), (_drawingSurface.Size.ToVector2() - new Vector2(4, 4)).ToSize());
ds.FillRoundedRectangle(rect, 15, 15, Colors.LightBlue);
ds.DrawRoundedRectangle(rect, 15, 15, Colors.Gray, 2);
ds.DrawText("This is a composition drawing surface", rect, Colors.Black, new CanvasTextFormat()
{
FontFamily = "Comic Sans MS",
FontSize = 32,
WordWrapping = CanvasWordWrapping.WholeWord,
VerticalAlignment = CanvasVerticalAlignment.Center,
HorizontalAlignment = CanvasHorizontalAlignment.Center
}
);
_drawingBrush.Surface = _drawingSurface;
_drawingVisual = _compositor.CreateSpriteVisual();
_drawingVisual.Brush = _drawingBrush;
_drawingVisual.Size = new Vector2(156, 156);
Ebenso kann compositionSurfaceBrush auch verwendet werden, um ein SpriteVisual mit einer SwapChain mithilfe von Win2D-Interop zu zeichnen. Dieses Beispiel enthält ein Beispiel für die Verwendung von Win2D zum Zeichnen eines SpriteVisual mit einer Swapchain.
Zeichnen mit einem Video
Ein CompositionSurfaceBrush kann auch verwendet werden, um einen Bereich mit Pixeln aus einem ICompositionSurface zu zeichnen, das mithilfe eines Videos gerendert wird, das über die MediaPlayer-Klasse geladen wird.
Der folgende Code zeigt ein SpriteVisual, das mit einem Video gezeichnet wurde, das in eine ICompositionSurface geladen wurde.
Compositor _compositor;
SpriteVisual _videoVisual;
CompositionSurfaceBrush _videoBrush;
// MediaPlayer set up with a create from URI
_mediaPlayer = new MediaPlayer();
// Get a source from a URI. This could also be from a file via a picker or a stream
var source = MediaSource.CreateFromUri(new Uri("https://go.microsoft.com/fwlink/?LinkID=809007&clcid=0x409"));
var item = new MediaPlaybackItem(source);
_mediaPlayer.Source = item;
_mediaPlayer.IsLoopingEnabled = true;
// Get the surface from MediaPlayer and put it on a brush
_videoSurface = _mediaPlayer.GetSurface(_compositor);
_videoBrush = _compositor.CreateSurfaceBrush(_videoSurface.CompositionSurface);
_videoVisual = _compositor.CreateSpriteVisual();
_videoVisual.Brush = _videoBrush;
_videoVisual.Size = new Vector2(156, 156);
Paint mit einem Filtereffekt
Ein CompositionEffectBrush zeichnet einen Bereich mit ausgabe eines CompositionEffect. Effekte in der visuellen Ebene können als abstellbare Filtereffekte betrachtet werden, die auf eine Sammlung von Quellinhalten angewendet werden, z. B. Farben, Farbverläufe, Bilder, Videos, Swapchains, Regionen Ihrer Benutzeroberfläche oder Strukturen von Visuals. Der Quellinhalt wird in der Regel mit einem anderen CompositionBrush angegeben.
Die folgende Abbildung und der folgende Code zeigen ein SpriteVisual, das mit einem Bild einer Katze gezeichnet wurde, die den Entsättigungsfiltereffekt angewendet hat.
Compositor _compositor;
SpriteVisual _effectVisual;
CompositionEffectBrush _effectBrush;
_compositor = Window.Current.Compositor;
var graphicsEffect = new SaturationEffect {
Saturation = 0.0f,
Source = new CompositionEffectSourceParameter("mySource")
};
var effectFactory = _compositor.CreateEffectFactory(graphicsEffect);
_effectBrush = effectFactory.CreateBrush();
CompositionSurfaceBrush surfaceBrush =_compositor.CreateSurfaceBrush();
LoadedImageSurface loadedSurface = LoadedImageSurface.StartLoadFromUri(new Uri("ms-appx:///Assets/cat.jpg"));
SurfaceBrush.surface = loadedSurface;
_effectBrush.SetSourceParameter("mySource", surfaceBrush);
_effectVisual = _compositor.CreateSpriteVisual();
_effectVisual.Brush = _effectBrush;
_effectVisual.Size = new Vector2(156, 156);
Weitere Informationen zum Erstellen eines Effekts mit CompositionBrushes finden Sie unter Effekte in visueller Ebene.
Paint with a CompositionBrush with opacity mask applied
Ein CompositionMaskBrush zeichnet einen Bereich mit einem CompositionBrush mit einer Deckkraftmaske, die darauf angewendet wird. Die Quelle der Deckkraftmaske kann ein beliebiger CompositionBrush vom Typ CompositionColorBrush, CompositionLinearGradientBrush, CompositionSurfaceBrush, CompositionEffectBrush oder CompositionNineGridBrush sein. Die Deckkraftmaske muss als CompositionSurfaceBrush angegeben werden.
In der folgenden Abbildung und im Code wird ein SpriteVisual mit einem CompositionMaskBrush-Element dargestellt. Die Quelle der Maske ist eine CompositionLinearGradientBrush, die maskiert ist, um wie ein Kreis auszusehen, indem ein Bild des Kreises als Maske verwendet wird.
Compositor _compositor;
SpriteVisual _maskVisual;
CompositionMaskBrush _maskBrush;
_compositor = Window.Current.Compositor;
_maskBrush = _compositor.CreateMaskBrush();
CompositionLinearGradientBrush _sourceGradient = _compositor.CreateLinearGradientBrush();
_sourceGradient.ColorStops.Add(_compositor.CreateColorGradientStop(0,Colors.Red));
_sourceGradient.ColorStops.Add(_compositor.CreateColorGradientStop(1,Colors.Yellow));
_maskBrush.Source = _sourceGradient;
LoadedImageSurface loadedSurface = LoadedImageSurface.StartLoadFromUri(new Uri("ms-appx:///Assets/circle.png"), new Size(156.0, 156.0));
_maskBrush.Mask = _compositor.CreateSurfaceBrush(loadedSurface);
_maskVisual = _compositor.CreateSpriteVisual();
_maskVisual.Brush = _maskBrush;
_maskVisual.Size = new Vector2(156, 156);
Malen mit einem CompositionBrush mit NineGrid Stretch
Ein CompositionNineGridBrush zeichnet einen Bereich mit einem CompositionBrush, der mithilfe der Metapher mit neun Rastern gestreckt wird. Die Metapher mit neun Rastern ermöglicht es Ihnen, Kanten und Ecken eines CompositionBrush anders als seine Mitte zu strecken. Die Quelle der Neun-Raster-Dehnung kann von jedem CompositionBrush vom Typ CompositionColorBrush, CompositionSurfaceBrush oder CompositionEffectBrush verwendet werden.
Der folgende Code zeigt ein SpriteVisual, das mit einem CompositionNineGridBrush gezeichnet wurde. Die Quelle der Maske ist eine CompositionSurfaceBrush, die mithilfe eines Nine-Rasters gestreckt wird.
Compositor _compositor;
SpriteVisual _nineGridVisual;
CompositionNineGridBrush _nineGridBrush;
_compositor = Window.Current.Compositor;
_ninegridBrush = _compositor.CreateNineGridBrush();
// nineGridImage.png is 50x50 pixels; nine-grid insets, as measured relative to the actual size of the image, are: left = 1, top = 5, right = 10, bottom = 20 (in pixels)
LoadedImageSurface _imageSurface = LoadedImageSurface.StartLoadFromUri(new Uri("ms-appx:///Assets/nineGridImage.png"));
_nineGridBrush.Source = _compositor.CreateSurfaceBrush(_imageSurface);
// set Nine-Grid Insets
_ninegridBrush.SetInsets(1, 5, 10, 20);
// set appropriate Stretch on SurfaceBrush for Center of Nine-Grid
sourceBrush.Stretch = CompositionStretch.Fill;
_nineGridVisual = _compositor.CreateSpriteVisual();
_nineGridVisual.Brush = _ninegridBrush;
_nineGridVisual.Size = new Vector2(100, 75);
Malen mit Hintergrundpixeln
Ein CompositionBackdropBrush zeichnet einen Bereich mit dem Inhalt hinter dem Bereich. Ein CompositionBackdropBrush wird nie allein verwendet, sondern wird stattdessen wie ein EffectBrush als Eingabe für eine andere CompositionBrush verwendet. Wenn Sie beispielsweise einen CompositionBackdropBrush als Eingabe für einen Blur-Effekt verwenden, können Sie einen Mattglaseffekt erzielen.
Der folgende Code zeigt eine kleine visuelle Struktur zum Erstellen eines Bilds mithilfe von CompositionSurfaceBrush und einer Überlagerung aus mattiertem Glas über dem Bild. Die Überlagerung aus mattiertem Glas wird erstellt, indem ein SpriteVisual mit einem EffectBrush-Element über dem Bild platziert wird. EffectBrush verwendet einen CompositionBackdropBrush als Eingabe für den Weichzeichnereffekt.
Compositor _compositor;
SpriteVisual _containerVisual;
SpriteVisual _imageVisual;
SpriteVisual _backdropVisual;
_compositor = Window.Current.Compositor;
// Create container visual to host the visual tree
_containerVisual = _compositor.CreateContainerVisual();
// Create _imageVisual and add it to the bottom of the container visual.
// Paint the visual with an image.
CompositionSurfaceBrush _licoriceBrush = _compositor.CreateSurfaceBrush();
LoadedImageSurface loadedSurface =
LoadedImageSurface.StartLoadFromUri(new Uri("ms-appx:///Assets/licorice.jpg"));
_licoriceBrush.Surface = loadedSurface;
_imageVisual = _compositor.CreateSpriteVisual();
_imageVisual.Brush = _licoriceBrush;
_imageVisual.Size = new Vector2(156, 156);
_imageVisual.Offset = new Vector3(0, 0, 0);
_containerVisual.Children.InsertAtBottom(_imageVisual)
// Create a SpriteVisual and add it to the top of the containerVisual.
// Paint the visual with an EffectBrush that applies blur to the content
// underneath the Visual to create a frosted glass effect.
GaussianBlurEffect blurEffect = new GaussianBlurEffect(){
Name = "Blur",
BlurAmount = 1.0f,
BorderMode = EffectBorderMode.Hard,
Source = new CompositionEffectSourceParameter("source");
};
CompositionEffectFactory blurEffectFactory = _compositor.CreateEffectFactory(blurEffect);
CompositionEffectBrush _backdropBrush = blurEffectFactory.CreateBrush();
// Create a BackdropBrush and bind it to the EffectSourceParameter source
_backdropBrush.SetSourceParameter("source", _compositor.CreateBackdropBrush());
_backdropVisual = _compositor.CreateSpriteVisual();
_backdropVisual.Brush = _licoriceBrush;
_backdropVisual.Size = new Vector2(78, 78);
_backdropVisual.Offset = new Vector3(39, 39, 0);
_containerVisual.Children.InsertAtTop(_backdropVisual);
Kombinieren von CompositionBrushes
Eine Reihe von CompositionBrushes verwendet andere CompositionBrushes als Eingaben. Beispielsweise kann mithilfe der SetSourceParameter-Methode ein anderes CompositionBrush als Eingabe auf eine CompositionEffectBrush festgelegt werden. In der folgenden Tabelle werden die unterstützten Kombinationen von CompositionBrushes beschrieben. Beachten Sie, dass die Verwendung einer nicht unterstützten Kombination eine Ausnahme auslöst.
Brush | EffectBrush.SetSourceParameter() | MaskBrush.Mask | MaskBrush.Source | NineGridBrush.Source |
---|---|---|---|---|
CompositionColorBrush | YES | YES | YES | YES |
CompositionLinear Gradientbrush |
YES | YES | YES | Nein |
CompositionSurfaceBrush | YES | YES | YES | YES |
CompositionEffectBrush | Nein | Nein | YES | Nein |
CompositionMaskBrush | Nein | Nein | Nein | Nein |
CompositionNineGridBrush | YES | YES | YES | Nein |
CompositionBackdropBrush | YES | Nein | Nein | Nein |
Verwenden eines XAML-Pinsels im Vergleich zu CompositionBrush
Die folgende Tabelle enthält eine Liste von Szenarien und ob die Verwendung des XAML- oder Kompositionspinsels beim Malen eines UIElement oder eines SpriteVisual in Ihrer Anwendung vorgeschrieben ist.
Hinweis
Wenn ein CompositionBrush für ein XAML UIElement vorgeschlagen wird, wird davon ausgegangen, dass CompositionBrush mithilfe einer XamlCompositionBrushBase gepackt wird.
Szenario | XAML UIElement | Composition SpriteVisual |
---|---|---|
Malen eines Bereichs mit Volltonfarbe | SolidColorBrush | CompositionColorBrush |
Malen eines Bereichs mit animierter Farbe | SolidColorBrush | CompositionColorBrush |
Zeichnen eines Bereichs mit einem statischen Farbverlauf | LinearGradientBrush | CompositionLinearGradientBrush |
Zeichnen eines Bereichs mit animierten Farbverlaufsstopps | CompositionLinearGradientBrush | CompositionLinearGradientBrush |
Zeichnen eines Bereichs mit einem Bild | ImageBrush | CompositionSurfaceBrush |
Malen eines Bereichs mit einer Webseite | WebViewBrush | – |
Zeichnen eines Bereichs mit einem Bild mit NineGrid Stretch | Bildsteuerung | CompositionNineGridBrush |
Malen eines Bereichs mit animiertem NineGrid-Stretch | CompositionNineGridBrush | CompositionNineGridBrush |
Malen eines Bereichs mit einer Swapchain | SwapChainPanel | CompositionSurfaceBrush mit Swapchain-Interop |
Zeichnen eines Bereichs mit einem Video | MediaElement | CompositionSurfaceBrush mit Medieninterop |
Malen eines Bereichs mit benutzerdefinierter 2D-Zeichnung | CanvasControl von Win2D | CompositionSurfaceBrush mit Win2D-Interop |
Malen eines Bereichs mit nicht animierter Maske | Verwenden von XAML-Shapes zum Definieren einer Maske | CompositionMaskBrush |
Malen eines Bereichs mit einer animierten Maske | CompositionMaskBrush | CompositionMaskBrush |
Malen eines Bereichs mit einem animierten Filtereffekt | CompositionEffectBrush | CompositionEffectBrush |
Malen eines Bereichs mit einem Effekt, der auf Hintergrundpixel angewendet wird | CompositionBackdropBrush | CompositionBackdropBrush |
Verwandte Themen
Komposition native DirectX- und Direct2D-Interop mit BeginDraw und EndDraw
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