從WPF轉到Avalonia的隨手記

從WPF轉到Avalonia的隨手記

使用命令行新建項目

用VS建立的項目版本比較舊,可能已過時,還是多個項目,用來玩demo沒必要,因爲我也不會有複雜的發佈流程,之後再仔細的瞭解吧。

// 在開始之前,請確保您已經安裝了Avalonia模板:
dotnet new install Avalonia.Templates

// 創建項目:
dotnet new avalonia.app -o AvaloniaApp1

自帶中文字體偏模糊,替換爲鴻蒙中文字體

從網上下載鴻蒙字體壓縮包解壓後,發現有8個目錄,HarmonyOS_Sans可能代表僅英文,因爲它文件比較小。Condensed表示緊湊字體,Italic表示斜體,Naskh_Arabic表示阿拉伯系語言(他們很特殊,比如從右到左排版),SC表示簡體中文,TC表示傳統中文(繁體)。
找到針對簡體中文的目錄 HarmonyOS_Sans_SC 裏面有六個TTF文件。
如果僅使用默認字重(Regular),可僅複製 HarmonyOS_Sans_SC_Regular.ttf 文件,如果使用別的字重(Bold、Light),則複製對應的文件,如果對程序包大小無所謂,可以複製所有。
我的項目名(AvaloniaApp1),將幾個TTF文件複製到 Assets 目錄內,確保這幾個項目文件的屬性,生成操作:AvaloniaResource。一般默認就是這個。
根據官方示例,可以預先定義字體爲資源,供之後方便使用。

字重(FontWeight)默認引用的是Regular字體文件,對應HarmonyOS Sans SC字體名稱,如果FontWeight修改爲Bold,則對應HarmonyOS Sans SC Bold字體名稱。
avares資源地址,#前的內容指字體文件存放的目錄(因爲我們有多個FontWeight可用),#後的是字體名,這裏就是Regular的字體名稱,可以從TTF文件屬性中得到。當然,如果我們只用一個FontWeight,也就是不切換字重,那路徑可以精確到TTF文件。當然這樣做的結果是改了FontWeight也不會有渲染的改變了。

// file:App.axaml

<Application>
  <Application.Resources>
    <FontFamily x:Key="HarmonyFont">avares://AvaloniaApp1/Assets#HarmonyOS Sans SC</FontFamily>
    <!--<FontFamily x:Key="HarmonyFont_SingleFile">avares://AvaloniaApp1/Assets/HarmonyOS_Sans_SC_Regular.ttf#HarmonyOS Sans SC</FontFamily>-->
  </Application.Resources>
</Application>

之後就可以方便的使用這個資源了,比如在窗體上應用:

<Window FontFamily="{StaticResource HarmonyFont}" FontWeight="Medium">
  <TextBlock Text="Hello, 我的測試程序!54321" />
</Window>

從命令行新建的項目,和從VisualStudio2022擴展,創建的內容不一樣

2024年3月,從VS新建是多個項目,且升級nuget包到最新版,會導致DataGrid組件報錯,退至v11最開始版本可用,不知道是模板有問題還是版本問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章