GraphicsView
L'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) GraphicsView è un'area di disegno grafica in cui è possibile disegnare grafica 2D usando i tipi dello spazio dei Microsoft.Maui.Graphics nomi. Per altre informazioni su Microsoft.Maui.Graphics, vedere Grafica.
GraphicsView definisce la Drawable
proprietà di tipo IDrawable
, che specifica il contenuto che verrà disegnato. Questa proprietà è supportata da un BindablePropertyoggetto , il che significa che può essere la destinazione del data binding e stili.
GraphicsView definisce gli eventi seguenti:
StartHoverInteraction
, conTouchEventArgs
, che viene generato quando un puntatore entra nell'area hit test dell'oggetto GraphicsView.MoveHoverInteraction
, conTouchEventArgs
, che viene generato quando un puntatore si sposta mentre il puntatore rimane all'interno dell'area di hit test di GraphicsView.EndHoverInteraction
, che viene generato quando un puntatore lascia l'area di hit test dell'oggetto GraphicsView.StartInteraction
, conTouchEventArgs
, che viene generato quando viene premuto .GraphicsViewDragInteraction
, conTouchEventArgs
, che viene generato quando l'oggetto GraphicsView viene trascinato.EndInteraction
, conTouchEventArgs
, che viene generato quando viene rilasciata la pressione che ha generato l'eventoStartInteraction
.CancelInteraction
, che viene generato quando la pressione che ha fatto contatto con il GraphicsView contatto perde il contatto.
Creare un controllo GraphicsView
Un GraphicsView oggetto deve definire un IDrawable
oggetto che specifica il contenuto che verrà disegnato sul controllo. A tale scopo, è possibile creare un oggetto che deriva da IDrawable
e implementando il relativo Draw
metodo:
namespace MyMauiApp
{
public class GraphicsDrawable : IDrawable
{
public void Draw(ICanvas canvas, RectF dirtyRect)
{
// Drawing code goes here
}
}
}
Il Draw
metodo ha ICanvas argomenti e RectF
. L'argomento ICanvas è l'area di disegno in cui si disegnano oggetti grafici. L'argomento RectF
è un struct
oggetto che contiene dati relativi alle dimensioni e alla posizione dell'area di disegno. Per altre informazioni sul disegno su un ICanvasoggetto , vedere Disegnare oggetti grafici.
In XAML l'oggetto IDrawable
può essere dichiarato come risorsa e quindi utilizzato da un GraphicsView oggetto specificandone la chiave come valore della Drawable
proprietà:
<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>
Posizionare e ridimensionare oggetti grafici
La posizione e le dimensioni di ICanvas in una pagina possono essere determinate esaminando le proprietà dell'argomento RectF
nel Draw
metodo .
Lo RectF
struct definisce le proprietà seguenti:
Bottom
, di tipofloat
, che rappresenta la coordinata y del bordo inferiore dell'area di disegno.Center
, di tipoPointF
, che specifica le coordinate del centro dell'area di disegno.Height
, di tipofloat
, che definisce l'altezza dell'area di disegno.IsEmpty
, di tipobool
, che indica se l'area di disegno ha una dimensione e una posizione pari a zero.Left
, di tipofloat
, che rappresenta la coordinata x del bordo sinistro dell'area di disegno.Location
, di tipoPointF
, che definisce le coordinate dell'angolo superiore sinistro dell'area di disegno.Right
, di tipofloat
, che rappresenta la coordinata x del bordo destro dell'area di disegno.Size
, di tipoSizeF
, che definisce la larghezza e l'altezza dell'area di disegno.Top
, di tipofloat
, che rappresenta la coordinata y del bordo superiore dell'area di disegno.Width
, di tipofloat
, che definisce la larghezza dell'area di disegno.X
, di tipofloat
, che definisce la coordinata x dell'angolo superiore sinistro dell'area di disegno.Y
, di tipofloat
, che definisce la coordinata y dell'angolo superiore sinistro dell'area di disegno.
Queste proprietà possono essere usate per posizionare e ridimensionare oggetti grafici in ICanvas. Ad esempio, gli oggetti grafici possono essere posizionati al centro di Canvas
utilizzando i Center.X
valori e Center.Y
come argomenti di un metodo di disegno. Per informazioni sul disegno su un ICanvasoggetto , vedere Disegnare oggetti grafici.
Invalidare l'area di disegno
GraphicsView dispone di un Invalidate
metodo che informa l'area di disegno che deve ridisegnarsi. Questo metodo deve essere richiamato in un'istanza GraphicsView di :
graphicsView.Invalidate();
.NET MAUI invalida automaticamente l'oggetto GraphicsView in base alle esigenze dell'interfaccia utente. Ad esempio, quando l'elemento viene visualizzato per la prima volta, entra in visualizzazione o viene rivelato spostando un elemento da sopra di esso, viene ridisegnato. L'unica volta che è necessario chiamare Invalidate
è quando si vuole forzare il GraphicsView disegno di per ridisegnare se stesso, ad esempio se il contenuto è stato modificato mentre è ancora visibile.