Share via


SvgImageSource 類別

定義

針對使用可調整向量圖形 (SVG) 來源的屬性提供來源物件。 您可以使用參考 SVG 檔案的統一資源識別項 (URI) ,或呼叫 SetSourceAsync (IRandomAccessStream) 並提供資料流程來定義 SvgImageSource。

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class SvgImageSource : ImageSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class SvgImageSource : ImageSource
Public Class SvgImageSource
Inherits ImageSource
繼承
Object IInspectable DependencyObject ImageSource SvgImageSource
屬性

範例

以下是如何將 影像 來源設定為 SVG 檔案的範例。 由於未明確指定高度或寬度,因此應用程式佈建會指定要解碼之 SVG 的適當大小。

<Image Source="Assets/mysvg.svg"/>

備註

SvgImageSource 可讓您使用 ImageBrush 或直接在 Image 控制項中顯示 SVG 來源。 SvgImageSource 支援來自 SVG 規格的安全靜態模式,不支援動畫或互動。 Direct2D API 提供基礎 SVG 轉譯支援,如需特定 SVG 元素和屬性支援的詳細資訊,請參閱 SVG 支援。 如需格式的詳細資訊,以及如何使用統一資源識別項 (URI) 來存取來自應用程式資源的影像來源檔案,請參閱 Image 和 ImageBrush

SvgImageSource 代表抽象概念,讓 SVG 來源可以非同步設定,但仍會在 XAML 標記中參考為屬性值,或在程式碼中當做不使用可等候語法的物件來參考。 當您在程式碼中建立 SvgImageSource 物件時,它一開始沒有有效的來源。 然後,您應該使用下列其中一種技術來設定其來源:

  • 使用 SvgImageSource (Uri) 建構函式,而不是預設建構函式。 雖然它是建構函式,但您可以將這視為具有隱含非同步行為:SvgImageSource 在引發表示成功非同步來源集作業的 Opened 事件之前將無法使用。
  • 設定 UriSource 屬性。 如同 Uri 建構函式一樣,此動作是隱含非同步,而且 SvgImageSource 在引發 Opened 事件之前將無法使用。
  • 使用 SetSourceAsync (IRandomAccessStream) 。 這個方法是明確非同步。 您可能使用 SvgImageSource 的屬性,例如 Source是針對這個非同步行為所設計,而且如果使用尚未完整來源的 SvgImageSource 設定,則不會擲回例外狀況。 您應該直接處理 SvgImageSource 上的Opened 或 OpenFailed事件,或是直接在控制項類別上使用來源 (的控制項上處理Opened或 OpenFailed 事件) 。

OpenedOpenFailed 互斥。 每當 SvgImageSource 物件已設定或重設來源值時,一律會引發一個事件或另一個事件。

調整大小

視您預期的使用案例而定,您可以透過數種不同的方式指定 SvgImageSource 的大小:

  • 使用 RasterizePixelHeightRasterizePixelWidth 屬性,以邏輯圖元指定明確的高度和寬度,以解碼 SVG 來源。
  • 如果您未指定 RasterizePixelHeightRasterizePixelWidth,則應用程式的版面配置會指定解碼大小,同時仍保留外觀比例。 如果無法從應用程式的版面配置判斷大小,則 SVG 來源將會解碼為視窗大小上限。

版本相容性

在 Windows 10 1703 版之前,無法使用 SvgImageSource 類別。 如果您的 App 在 Microsoft Visual Studio 中的「最低平臺版本」設定小於此頁面稍後的 Requirements 區塊中顯示的「引進版本」,您將無法使用 SvgImageSource。 如需詳細資訊,請參閱 版本調適型程式碼

若要避免在舊版Windows 10上執行應用程式時發生例外狀況,請勿在 XAML 中設定此屬性,或在不執行執行時間檢查的情況下使用它。 此範例示範如何使用 ApiInformation 類別來檢查此類別是否存在,再使用它。

建構函式

SvgImageSource()

初始化 SvgImageSource 類別的新實例。

SvgImageSource(Uri)

使用提供的統一資源識別項 (URI) ,初始化 SvgImageSource 類別的新實例。

屬性

Dispatcher

一律會在 null Windows 應用程式 SDK應用程式中傳回。 請改用 DispatcherQueue

(繼承來源 DependencyObject)
DispatcherQueue

DispatcherQueue取得與這個 物件相關聯的 。 DispatcherQueue表示即使程式碼是由非 UI 執行緒起始,也可以存取 DependencyObject UI 執行緒上的 。

(繼承來源 DependencyObject)
RasterizePixelHeight

取得或設定要用於 SVG 點陣化作業的高度。

RasterizePixelHeightProperty

識別 RasterizePixelHeight 相依性屬性。

RasterizePixelWidth

取得或設定用於 SVG 點陣化作業的寬度。

RasterizePixelWidthProperty

識別 RasterizePixelWidth 相依性屬性。

UriSource

取得或設定產生此 SvgImageSource之 SVG 來源檔案的統一資源識別元 (URI) 。

UriSourceProperty

識別 UriSource 相依性屬性。

方法

ClearValue(DependencyProperty)

清除相依性屬性的本機值。

(繼承來源 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

傳回針對相依性屬性所建立的任何基底值,如果動畫未使用中,則會套用。

(繼承來源 DependencyObject)
GetValue(DependencyProperty)

DependencyObject傳回相依性屬性的目前有效值。

(繼承來源 DependencyObject)
ReadLocalValue(DependencyProperty)

如果已設定本機值,則傳回相依性屬性的本機值。

(繼承來源 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

註冊通知函式,以接聽此DependencyObject實例上特定DependencyProperty的變更。

(繼承來源 DependencyObject)
SetSourceAsync(IRandomAccessStream)

藉由存取資料流程並以非同步方式處理結果,設定 SvgImageSource 的來源 SVG

SetValue(DependencyProperty, Object)

DependencyObject上設定相依性屬性的本機值。

(繼承來源 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消先前透過呼叫 RegisterPropertyChangedCallback註冊的變更通知。

(繼承來源 DependencyObject)

事件

Opened

發生于下載並解碼 SVG 來源時,不會失敗。

OpenFailed

發生于與 SVG 擷取或格式相關聯的錯誤時。

適用於