GraphicsView
.NET Multi-platform App UI (.NET MAUI) GraphicsView es un lienzo gráfico en el que se pueden dibujar gráficos 2D mediante tipos del espacio de nombres Microsoft.Maui.Graphics. Para más información sobre Microsoft.Maui.Graphics, consulta Gráficos.
GraphicsView define la propiedad Drawable
, de tipo IDrawable
, que especifica el contenido que se dibujará. Esta propiedad está respaldada por una propiedad BindableProperty, lo que significa que puede ser el destino del enlace de datos y aplicar estilos.
GraphicsView define los siguientes eventos:
StartHoverInteraction
, conTouchEventArgs
, que se genera cuando un puntero entra en el área de prueba de posicionamiento de GraphicsView.MoveHoverInteraction
, conTouchEventArgs
, que se genera cuando un puntero se mueve mientras el puntero permanece dentro del área de prueba de posicionamiento de GraphicsView.EndHoverInteraction
, que se genera cuando un puntero deja el área de prueba de posicionamiento de GraphicsView.StartInteraction
, conTouchEventArgs
, que se genera cuando se presiona GraphicsView.DragInteraction
, conTouchEventArgs
, que se genera cuando se arrastra GraphicsView.EndInteraction
, conTouchEventArgs
, que se genera cuando se libera la presión que generó el eventoStartInteraction
.CancelInteraction
, que se genera cuando la presión que hizo contacto con GraphicsView pierde contacto.
Creación de una GraphicsView
GraphicsView debe definir un objeto IDrawable
que especifique el contenido que se dibujará en el control. Esto se puede lograr mediante la creación de un objeto que deriva de IDrawable
y mediante la implementación de su método Draw
:
namespace MyMauiApp
{
public class GraphicsDrawable : IDrawable
{
public void Draw(ICanvas canvas, RectF dirtyRect)
{
// Drawing code goes here
}
}
}
El método Draw
tiene los argumentos ICanvas y RectF
. El argumento ICanvas es el lienzo de dibujo en el que se dibujan objetos gráficos. El argumento RectF
es un struct
que contiene datos sobre el tamaño y la ubicación del lienzo de dibujo. Para más información sobre cómo dibujar en un objeto ICanvas, consulta Dibujar objetos gráficos.
En XAML, el objeto IDrawable
se puede declarar como un recurso que luego GraphicsView consume especificando su clave como el valor de la propiedad Drawable
:
<ContentPage xmlns=http://schemas.microsoft.com/dotnet/2021/maui
xmlns:x=http://schemas.microsoft.com/winfx/2009/xaml
xmlns:drawable="clr-namespace:MyMauiApp"
x:Class="MyMauiApp.MainPage">
<ContentPage.Resources>
<drawable:GraphicsDrawable x:Key="drawable" />
</ContentPage.Resources>
<VerticalStackLayout>
<GraphicsView Drawable="{StaticResource drawable}"
HeightRequest="300"
WidthRequest="400" />
</VerticalStackLayout>
</ContentPage>
Posición y tamaño de objetos gráficos
La ubicación y el tamaño de ICanvas en una página se pueden determinar examinando las propiedades del argumento RectF
en el método Draw
.
La estructura RectF
define las propiedades siguientes:
Bottom
, de tipofloat
, que representa la coordenada y del borde inferior del lienzo.Center
, de tipoPointF
, que especifica las coordenadas del centro del lienzo.Height
, de tipofloat
, que define la altura del lienzo.IsEmpty
, de tipobool
, que indica si el lienzo tiene un tamaño cero y una ubicación.Left
, de tipofloat
, que representa la coordenada x del borde izquierdo del lienzo.Location
, de tipoPointF
, que define las coordenadas de la esquina superior izquierda del lienzo.Right
, de tipofloat
, que representa la coordenada x del borde derecho del lienzo.Size
, de tipoSizeF
, que define la anchura y la altura del lienzo.Top
, de tipofloat
, que representa la coordenada y del borde superior del lienzo.Width
, de tipofloat
, que define el ancho del lienzo.X
, de tipofloat
, que define la coordenada x de la esquina superior izquierda del lienzo.Y
, de tipofloat
, que define la coordenada y de la esquina superior izquierda del lienzo.
Estas propiedades se pueden usar para colocar y ajustar el tamaño de los objetos gráficos en ICanvas. Por ejemplo, los objetos gráficos se pueden colocar en el centro de Canvas
mediante el uso de los valores Center.X
y Center.Y
como argumentos para un método de dibujo. Para información sobre cómo dibujar en un ICanvas, consulta Dibujar objeto gráficos.
Invalidar el lienzo
GraphicsView tiene un método Invalidate
que informa al lienzo de que debe volver a dibujarse. Este método debe invocarse en una instancia de GraphicsView:
graphicsView.Invalidate();
.NET MAUI invalida automáticamente GraphicsView según sea necesario en la interfaz de usuario. Por ejemplo, cuando el elemento se muestra por primera vez, entra en la vista o se revela moviendo un elemento desde la parte superior, se vuelve a dibujar. La única vez que necesitas llamar a Invalidate
es cuando quieres forzar a que GraphicsView se vuelva a dibujar, por ejemplo, si ha cambiado su contenido mientras sigue visible.