<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      提升Avalonia UI質感,跨平臺圖標庫選型實踐

      前言

      之前我寫了 StarBlog 發布工具更新了版本,優化了一下界面,其中就把 emoji 表情換成了 FontAwesome 圖標

      emoji 如果只在一個系統上用(如 Windows)

      那可能沒啥問題

      但我多個設備之間切換,就發現在 macOS 上效果不好,有些 emoji 顯示得和 Windows 不一樣

      現在全部換成 Font Awesome 了,統一美觀很多。感覺換圖標這件事就可以單獨寫一篇文章了。

      Avalonia 的生態還可以,有不同的圖標庫可選,本文主要介紹兩個。

      • Icon.Avalonia
      • IconPacks.Avalonia

      Icon.Avalonia

      https://github.com/Projektanker/Icons.Avalonia

      這個庫支持兩種圖標,目前 Star 數量 365

      我在 StarBlog Publisher 工具里使用的就是這個庫,用起來蠻簡單的。

      安裝

      這里以 FontAwesome 為例,先添加依賴

      dotnet add package Projektanker.Icons.Avalonia.FontAwesome
      

      Program.BuildAvaloniaApp 方法里注冊

      public static AppBuilder BuildAvaloniaApp() {
        IconProvider.Current
          .Register<FontAwesomeIconProvider>();
      
        return AppBuilder.Configure<App>()
          .UsePlatformDetect()
          .LogToTrace();
      }
      

      在布局文件里添加命名空間

      xmlns:i="https://github.com/projektanker/icons.avalonia"
      

      使用

      然后就可以使用圖標了

      獨立使用(Standalone)

      <i:Icon Value="fa-brands fa-anchor" />
      

      獨立顯示一個圖標。

      附加到內容控件(例如 Button)(Attached to ContentControl,例如按鈕)

      <Button i:Attached.Icon="fa-brands fa-anchor" />
      

      將圖標附加到按鈕等控件中。

      附加到菜單項(MenuItem)(Attached to MenuItem)

      <MenuItem Header="關于" i:MenuItem.Icon="fa-solid fa-circle-info" />
      

      在菜單項中添加圖標,例如“關于”菜單。

      自定義圖標大?。–ustom icon size)

      <i:Icon Value="fa-brands fa-anchor" FontSize="24" />
      

      設置圖標字體大小為 24。

      添加動畫效果(Animated)

      <i:Icon Value="fa-spinner" Animation="Pulse" />
      <i:Icon Value="fa-sync" Animation="Spin" />
      

      為圖標添加動畫:

      • Pulse:跳動效果

      • Spin:旋轉效果

      作為圖像源使用(As an Image source)

      <Image>
        <Image.Source>
          <i:IconImage Value="fa-brands fa-anchor" Brush="(默認為黑色)" />
        </Image.Source>
      </Image>
      

      將圖標作為圖像顯示,可通過 Brush 設置顏色(默認黑色)。

      IconPacks.Avalonia

      https://github.com/MahApps/IconPacks.Avalonia

      這個庫支持的圖標就多了,不過很奇怪,Star 數量才 62

      支持以下這么多圖標…??,非常豐富!

      • BootstrapIcons
      • BoxIcons
      • CircumIcons
      • Codicons
      • Coolicons
      • Entypo
      • EvaIcons
      • FeatherIcons
      • FileIcons
      • Fontaudio
      • FontAwesome
      • Fontisto
      • ForkAwesome
      • GameIcons
      • Ionicons
      • JamIcons
      • Lucide
      • Material
      • MaterialLight
      • MaterialDesign
      • MemoryIcons
      • Microns
      • Modern
      • Octicons
      • PhosphorIcons
      • PicolIcons
      • PixelartIcons
      • RadixIcons
      • RemixIcon
      • RPGAwesome
      • SimpleIcons
      • Typicons
      • Unicons
      • VaadinIcons
      • WeatherIcons
      • Zondicons

      安裝

      這里也是以 FontAwesome 為例

      dotnet add package IconPacks.Avalonia.FontAwesome
      

      添加命名空間

      xmlns:iconPacks="https://github.com/MahApps/IconPacks.Avalonia"
      

      注冊到 Applications styles

      <Application.Styles>
        <FluentTheme />
      
        <StyleInclude Source="avares://IconPacks.Avalonia/Icons.axaml" />
        <StyleInclude Source="avares://IconPacks.Avalonia.FontAwesome/Icons.axaml" />
      </Application.Styles>
      

      PackIcon 控件

      PackIcon 控件是使用圖標包中圖標的主要方式。

      每個圖標包都有各自的控件,命名格式如下:

      PackIcon<包名>
      

      例如使用 FontAwesome 的圖標:

      <iconPacks:PackIconFontAwesome Kind="SolidAnchor"
                                     Width="24"
                                     Height="24" />
      

      或者:

      <iconPacks:PackIconFontAwesome Kind="BrandsGithub"
                                     Width="24"
                                     Height="24" />
      

      通用控件 PackIconControl

      PackIconControl 是一個通用控件,可以用來顯示任何圖標包中的圖標。

      僅在主包 IconPacks.Avalonia 中可用。

      <iconPacks:PackIconControl Kind="{x:Static iconPacks:PackIconFontAwesomeKind.SolidAnchor}"
                                 Width="24"
                                 Height="24" />
      

      PackIcon 標記擴展(MarkupExtensions)

      更快捷的方式是使用 PackIcon 的標記擴展(MarkupExtension)來設置 ContentControl 的內容。

      例如,你可以在 Button 中添加 FontAwesome 圖標:

      <Button Content="{iconPacks:FontAwesome SolidAnchor}" />
      

      或者使用參數形式:

      <Button Content="{iconPacks:FontAwesome Kind=SolidAnchor}" />
      

      還可以設置大?。?/p>

      <Button Content="{iconPacks:FontAwesome SolidAnchor, Width=32, Height=32}" />
      

      如果使用的是主包,還可以使用通用寫法:

      <Button Content="{iconPacks:PackIcon {x:Static iconPacks:PackIconFontAwesomeKind.SolidAnchor}, Width=32, Height=32}" />
      

      PackIcon 圖像標記擴展(Image MarkupExtensions)

      還可以將圖標作為圖片使用:

      <Image Source="{iconPacks:FontAwesomeImage Kind=SolidAnchor, Brush=DarkBlue}"
             Width="24" Height="24"
             HorizontalAlignment="Left" Margin="10" />
      

      也可以使用通用寫法(主包中可用):

      <Image Source="{iconPacks:PackIconImage Kind={x:Static iconPacks:PackIconFontAwesomeKind.SolidAnchor}, Brush=DarkOrange}"
             Width="24" Height="24"
             HorizontalAlignment="Left" Margin="10" />
      

      PackIcon 圖像轉換器(ImageConverter)

      還可以使用圖標轉換器將綁定的數據轉換為圖標圖像:

      <Image Source="{Binding #FontAwesomeKindComboBox.SelectedItem, Mode=OneWay, Converter={iconPacks:PackIconFontAwesomeKindToImageConverter Brush=Crimson}}"
             Width="24" Height="24"
             HorizontalAlignment="Left" Margin="10" />
      

      主包中還提供了一個通用轉換器:

      <Image Source="{Binding #FontAwesomeKindComboBox.SelectedItem, Mode=OneWay, Converter={iconPacks:PackIconKindToImageConverter Brush=Crimson}}"
             Width="24" Height="24"
             HorizontalAlignment="Left" Margin="10" />
      

      如需進一步了解 FontAwesome 支持的圖標類型(Solid、Regular、Brands 等),可以查看 PackIconFontAwesomeKind 枚舉,或在 IDE 中代碼補全里查看所有可用圖標名稱。

      圖標瀏覽工具

      https://github.com/MahApps/IconPacks.Browser

      這個 IconPacks 還提供了個圖標瀏覽器,可以很方便的搜索圖標和復制代碼

      確實是非常完善了~

      不過讓我沒想到的事,這個圖標瀏覽器的Star(170+)比圖標本體(60+)還多……??

      posted @ 2025-06-13 10:01  程序設計實驗室  閱讀(1472)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲肥老太bbw中国熟女| 黑人巨大AV在线播放无码| 久久天堂综合亚洲伊人HD妓女| 少妇被粗大的猛进出69影院| 中文字幕国产原创国产| 成年午夜免费韩国做受视频| 亚洲国产日韩一区三区| 无码av中文字幕久久专区| 色伦专区97中文字幕| 国产高清在线男人的天堂| 华人在线亚洲欧美精品| 亚洲精品国产综合麻豆久久99| 中文成人无字幕乱码精品区| 巴彦淖尔市| 99热门精品一区二区三区无码| 亚洲人成小说网站色在线| 国产精品自拍中文字幕| 中国帅小伙gaysextubevideo| 伊人精品成人久久综合97| 国产丝袜肉丝视频在线| 亚洲国产午夜精品理论片妓女| 国产欧美国日产高清| 国产精品午夜福利免费看| 91精品国产色综合久久| 亚洲精品综合第一国产综合| 国产精品麻豆成人av网| 日韩av一区二区三区精品| 成人国产乱对白在线观看 | 国语精品自产拍在线观看网站| 国产亚洲精品久久综合阿香| 人妻系列无码专区无码中出| 夜夜嗨久久人成在日日夜夜| 国产桃色在线成免费视频| 欧美性猛交xxxx乱大交丰满| 日本污视频在线观看| 亚洲嫩模一区二区三区 | 香蕉EEWW99国产精选免费| 国产极品粉嫩尤物一线天| 深夜在线观看免费av| 欧美性猛交xxxx免费看| 精品亚洲国产成人av|