圖形

Browse sample. 流覽範例

.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 功能。 GraphicsViewDrawable 定義 型 IDrawable別 的 屬性,指定控件將繪製的內容。 若要指定要繪製的內容,您必須建立衍生自 IDrawable的物件,並實作其 Draw 方法:

namespace MyMauiApp
{
    public class GraphicsDrawable : IDrawable
    {
        public void Draw(ICanvas canvas, RectF dirtyRect)
        {
            // Drawing code goes here
        }      
    }
}

方法 Draw 具有 ICanvasRectF 自變數。 自 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 定義下列會影響畫布上繪製之物件外觀的屬性:

  • Alphafloat別為 的 ,表示物件的不透明度。
  • Antialiasbool別為 的 ,指定是否啟用消除鋸齒功能。
  • BlendModeBlendMode別為 的 ,會定義混合模式,決定當對象呈現在現有物件之上時會發生什麼情況。
  • DisplayScalefloat別為 的 ,代表在畫布上縮放UI的縮放比例。
  • FillColorColor別為 的 ,表示用來繪製對象內部的色彩。
  • FontIFont別為 的 ,會在繪製文字時定義字型。
  • FontColor類型 Color為 的 ,指定繪圖文字時的字型色彩。
  • FontSizefloat別為 的 ,定義繪製文字時字型的大小。
  • MiterLimitfloat別為 的 ,指定 物件中行聯結的誤點長度限制。
  • StrokeColorColor別為 的 ,表示用來繪製物件外框的色彩。
  • StrokeDashOffsetfloat別為 的 ,指定虛線開始的虛線圖樣內的距離。
  • StrokeDashPatternfloat[]別為 的 ,指定用來概述對象的虛線和間距圖樣。
  • StrokeLineCap類型 LineCap為 的 ,描述線條開頭和結尾處的圖形。
  • StrokeLineJoinLineJoin別為 的 ,指定在圖形頂點使用的聯結類型。
  • StrokeSizefloat別為 的 ,表示物件的外框寬度。

根據預設,會將 ICanvas 設定為1、StrokeColor將設為StrokeSize黑色、StrokeLineJoin將設為LineJoin.Miter、和 StrokeLineCapLineJoin.Cap

繪圖畫布狀態

每個平臺上的繪圖畫布都能夠維持其狀態。 這可讓您保存目前的圖形狀態,並在需要時加以還原。

不過,並非所有畫布元素都是圖形狀態的元素。 圖形狀態不包含繪圖物件,例如路徑和繪製物件,例如漸層。 每個平台上圖形狀態的一般元素包括筆劃和填滿數據,以及字型數據。

您可以使用下列方法操作每個 ICanvas 圖形的狀態:

  • SaveState,其會儲存目前的圖形狀態。
  • RestoreState,它會將圖形狀態設定為最近儲存的狀態。
  • ResetState,它會將圖形狀態重設為其預設值。

注意

這些方法所保存的狀態取決於平臺。