Avalonia 在 X11 下使用軟渲染的方法

lindexi發表於2024-07-23

本文的方法適用於 11.0 的 Avalonia 版本

只需在 Program.cs 的 BuildAvaloniaApp 方法裡面配置 X11PlatformOptions 即可,程式碼如下

            .With(new X11PlatformOptions()
            {
                RenderingMode = new List<X11RenderingMode>()
                {
                    X11RenderingMode.Software
                }
            }

修改之後的 Program.cs 大概程式碼如下

using System;
using System.Collections.Generic;

using Avalonia;
using Avalonia.Media;

namespace NelkiwalweawhabairJewugekayfaylugere.Desktop;

class Program
{
    // Initialization code. Don't use any Avalonia, third-party APIs or any
    // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
    // yet and stuff might break.
    [STAThread]
    public static void Main(string[] args) => BuildAvaloniaApp()
        .StartWithClassicDesktopLifetime(args);

    // Avalonia configuration, don't remove; also used by visual designer.
    public static AppBuilder BuildAvaloniaApp()
        => AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .WithInterFont()
            .LogToTrace()
            // 修復麒麟丟失字型
            .With(new FontManagerOptions()
            {
                DefaultFamilyName = "Noto Sans CJK SC",
                FontFallbacks =
                [
                    new FontFallback { FontFamily = "文泉驛正黑" },
                    new FontFallback { FontFamily = "DejaVu Sans" },
                ],
            })
            .With(new X11PlatformOptions()
            {
                RenderingMode = new List<X11RenderingMode>()
                {
                    X11RenderingMode.Software
                }
            });

}

以上的程式碼設定字型是為了解決在麒麟系統無法顯示中文的問題或執行程序失敗的問題。詳細請看 dotnet 解決 UNO 在 OpenKylin 麒麟系統執行找不到預設字型啟動失敗

本文程式碼放在 githubgitee 上,可以使用如下命令列拉取程式碼

先建立一個空資料夾,接著使用命令列 cd 命令進入此空資料夾,在命令列裡面輸入以下程式碼,即可獲取到本文的程式碼

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin 8402eaca48804ec2418b459f540e5e48d1109a23

以上使用的是 gitee 的源,如果 gitee 不能訪問,請替換為 github 的源。請在命令列繼續輸入以下程式碼,將 gitee 源換成 github 源進行拉取程式碼

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin 8402eaca48804ec2418b459f540e5e48d1109a23

獲取程式碼之後,進入 AvaloniaIDemo/NelkiwalweawhabairJewugekayfaylugere 資料夾,即可獲取到原始碼

更多 Avalonia 以及 X11 等相關技術,請參閱 部落格導航

相關文章