c# - Win2D CanvasBitmap versus Microsoft.UI.Composition CompositionImage
uwp (2)
EDITAR:
Quitaron la CompositionImage en la última compilación ...
Me gustaría saber la diferencia entre Win2D CanvasBitmap
y Microsoft.UI.Composition CompositionImage
.
En ambos casos, pude mostrar imágenes pero realmente no sé / entiendo la diferencia entre los dos enfoques.
El enfoque de CanvasBitmap
:
XAML:
<xaml:CanvasControl Draw="OnDraw" />
Código:
private void Onraw(CanvasControl sender, CanvasAnimatedDrawEventArgs e)
{
var image = await CanvasBitmap.LoadAsync(...);
e.DrawingSession.DrawImage(...);
}
El enfoque de CompositionImage
:
XAML:
<Grid x:Name="Host" />
Código:
ContainerVisual rootVisual =
(ContainerVisual)ElementCompositionPreview.GetContainerVisual(this.Host);
Compositor compositor = rootVisual.Compositor;
CompositionGraphicsDevice device = compositor.DefaultGraphicsDevice,
CompositionImage image = device.CreateImageFromUri(...);
ImageVisual content = Compositor.CreateImageVisual();
content.Image = image;
rootVisual.Children.InsertAtTop(content);
¿Cual es la diferencia? ¿Cuál es el mejor enfoque?
Para poner algo en el contexto, tengo una aplicación que muestra muchas imágenes pequeñas. Necesito que la aplicación tenga poca memoria y dibuje rápidamente las imágenes.
Gracias, Adrien.
Depende...
Un CanvasControl y un ImageVisual son extremadamente similares en términos de costo de renderizado. En términos de costo de la CPU, ImageVisual es más liviano.
Sin embargo, puede visualizar grandes cantidades de CanvasBitmaps dentro de un solo CanvasControl (o CanvasAnimatedControl), por lo que si está buscando mostrar algo así como un juego 2D compuesto por cientos de bitmaps, entonces Win2D es probablemente el camino a seguir.
Si desea aprovechar el sistema de animación de Composition y mezclar imágenes con componentes XAML, entonces Composition es probablemente el camino a seguir.
Win2D es básicamente un simple contenedor 2D sobre directx; si creas un lienzo tienes un contexto directx donde puedes dibujar.
Las API de composición te permiten mezclar con la capa entre XAML y DirectX: este es un nivel un poco más alto que Win2D, y también el "lienzo" es la aplicación en sí :)
Entonces, Win2D CanvasBitmap
es como Image
in XAML, mientras que CompositionImage
se parece más a ImageSource
, porque solo puede usarlo en una fuente visual o como un efecto.
Técnicamente puede usar lo que quiera o sea más fácil para usted. Tenga en cuenta que las API de composición solo están disponibles en Windows 10 después de la versión TH2 (1511), por lo que si desea admitir RTM (compilación 10240) use una solución Win2D.