圖形
.NET 多平臺應用程式 UI (.NET MAUI) 提供跨平台圖形畫布,可使用命名空間中的類型 Microsoft.Maui.Graphics 繪製 2D 圖形。 此畫布支援繪製和繪製圖形和影像、組合作業,以及圖形化物件轉換。
所提供的 Microsoft.Maui.Graphics功能與 .NET MAUI 圖形和筆刷所提供的功能有許多相似之處。 不過,每個都針對不同的案例:
- Microsoft.Maui.Graphics 必須在繪圖畫布上取用功能、讓高效能的圖形繪製,並提供方便的方法來撰寫圖形型控件。 例如,復寫 GitHub 貢獻配置檔的控制項比使用 .NET MAUI 圖形更容易實 Microsoft.Maui.Graphics 作。
- .NET MAUI 圖形可以直接在頁面上取用,而且所有控件都可以取用筆刷。 提供這項功能可協助您產生有吸引力的UI。
如需 .NET MAUI 圖形的詳細資訊,請參閱 Shapes。
繪製圖形
在 .NET MAUI 中 GraphicsView ,可取用 Microsoft.Maui.Graphics 功能。 GraphicsView 會 Drawable
定義 型 IDrawable
別 的 屬性,指定控件將繪製的內容。 若要指定要繪製的內容,您必須建立衍生自 IDrawable
的物件,並實作其 Draw
方法:
namespace MyMauiApp
{
public class GraphicsDrawable : IDrawable
{
public void Draw(ICanvas canvas, RectF dirtyRect)
{
// Drawing code goes here
}
}
}
方法 Draw
具有 ICanvas 和 RectF
自變數。 自 ICanvas 變數是您繪製圖形物件的繪圖畫布。 自 RectF
變數是 struct
,其中包含繪圖畫布大小和位置的相關數據。
在 XAML 中IDrawable
,物件可以宣告為資源,然後藉由將其索引鍵指定為 屬性的值Drawable
來取GraphicsView用:
<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>
如需 的詳細資訊 GraphicsView,請參閱 GraphicsView。
繪圖畫布
控件GraphicsView會透過其 IDrawable
物件提供物件的存取ICanvas權,而可以設定屬性,並叫用方法來繪製圖形化物件。 如需繪圖的相關信息 ICanvas,請參閱 繪製圖形物件。
ICanvas 定義下列會影響畫布上繪製之物件外觀的屬性:
- Alpha型
float
別為 的 ,表示物件的不透明度。 - Antialias型
bool
別為 的 ,指定是否啟用消除鋸齒功能。 - BlendMode型 BlendMode別為 的 ,會定義混合模式,決定當對象呈現在現有物件之上時會發生什麼情況。
- DisplayScale型
float
別為 的 ,代表在畫布上縮放UI的縮放比例。 - FillColor型 Color別為 的 ,表示用來繪製對象內部的色彩。
- Font型 IFont別為 的 ,會在繪製文字時定義字型。
- FontColor類型 Color為 的 ,指定繪圖文字時的字型色彩。
- FontSize型
float
別為 的 ,定義繪製文字時字型的大小。 - MiterLimit型
float
別為 的 ,指定 物件中行聯結的誤點長度限制。 - StrokeColor型 Color別為 的 ,表示用來繪製物件外框的色彩。
- StrokeDashOffset型
float
別為 的 ,指定虛線開始的虛線圖樣內的距離。 - StrokeDashPattern型
float[]
別為 的 ,指定用來概述對象的虛線和間距圖樣。 - StrokeLineCap類型 LineCap為 的 ,描述線條開頭和結尾處的圖形。
- StrokeLineJoin型 LineJoin別為 的 ,指定在圖形頂點使用的聯結類型。
- StrokeSize型
float
別為 的 ,表示物件的外框寬度。
根據預設,會將 ICanvas 設定為1、StrokeColor將設為StrokeSize黑色、StrokeLineJoin將設為LineJoin.Miter
、和 StrokeLineCap 。LineJoin.Cap
繪圖畫布狀態
每個平臺上的繪圖畫布都能夠維持其狀態。 這可讓您保存目前的圖形狀態,並在需要時加以還原。
不過,並非所有畫布元素都是圖形狀態的元素。 圖形狀態不包含繪圖物件,例如路徑和繪製物件,例如漸層。 每個平台上圖形狀態的一般元素包括筆劃和填滿數據,以及字型數據。
您可以使用下列方法操作每個 ICanvas 圖形的狀態:
- SaveState,其會儲存目前的圖形狀態。
- RestoreState,它會將圖形狀態設定為最近儲存的狀態。
- ResetState,它會將圖形狀態重設為其預設值。
注意
這些方法所保存的狀態取決於平臺。