Avaloia 实现国产麒麟系统中文显示界面

news2024/9/27 9:20:35

最近在搞一个国产麒麟系统的接口对接,因为,接口内含复杂的签名验证,而且还是离线环境,所以,postman不是很好用。

就想着哪个方式好一些,主要是有选择图片的操作,所以,在Electron和Avalonia中做选择,其他的很少支持linux系统的。

综合考虑还是选择Avalonia,毕竟原生开发,xaml也跟WPF基本一致,所以,就来个Avalonia做了,试了下效果还是很不错的。

这里只做一个简单的窗体,能在麒麟桌面跑,其他的可以参考WPF。

Avaloia安装

打开 Visual Studio 2022 选择扩展菜单

选择扩展管理器

在扩展管理器里输入 Avalonia 关键词,然后把扩展都安装了。

然后,选择安装,就会显示下面,安装程序(需要关闭vs才可以,重复两次)

安装完毕会显示成功信息。

创建 Avaloia 项目

先新建 Avaloia c# Project项目,作为默认项目。

我这边默认选择桌面应用。

这个设计模式(design pattern) 分为了两种,实际上就是MVVM的实现方式吧,ReactiveUI和Community toolkit,相对来讲,community toolkit应该跟WPF差不多,我就选择了这个。


剩下的都选应该也没啥问题,都是绑定了,资源嵌入之类的。

创建完就是下面这个项目,整体结构简单,也不复杂。

我们F5 ,运行起来项目,是这样的,我增加了点中文显示。

部署到麒麟系统

项目右键发布,我设置了以下相关配置。

把生成的文件直接复制到目标系统上

麒麟系统信息

运行项目

直接双击 AvaloniaApplication1.Desktop 会打开 文本编辑器。

所以,我们需要修改名称为 AvaloniaApplication1,然后,授予执行权限就可以运行了.

双击应用,选择直接运行。

然后会发现,什么都没有,太不正常了。

这个时候只能命令行执行


真是出现了异常,大概意思是字体异常。

字体异常处理

在linux上不一定有默认的字体,那么,就需要导入相关字体,这里我选择了阿里云的商用免费字体。

访问 https://www.alibabafonts.com/#/font,下载你喜欢的字体

下载完后,大致是这个东西


只选择.ttf格式的文件就可以了,如下图所示

放到资源文件夹里,就像这样,我只放了一个,放的多,文件就越大。

还需要设置资源的嵌入类型,为 AvaloniaResource

如何获取字体的家族名字

需要一个工具叫做 FontForge
下载地址: https://fontforge.org/en-US/downloads/windows-dl/

运行程序,选择你的字体文件


点击ok,就可以打开这个界面

点击 element,选择 font info

就可以看到字体的相关信息了

引入离线字体

需要在入口处增加字体扩展

public static class AvaloniaAppBuilderExtensions
{
    public static AppBuilder UseFontAlibaba([DisallowNull] this AppBuilder builder, Action<FontSettings>? configDelegate = default)
    {
        var setting = new FontSettings();
        configDelegate?.Invoke(setting);

        return builder.With(new FontManagerOptions
        {
            DefaultFamilyName = setting.DefaultFontFamily,
            FontFallbacks = new[]
            {
                new FontFallback
                {
                    FontFamily = new FontFamily(setting.DefaultFontFamily)
                }
            }
        }).ConfigureFonts(manager => manager.AddFontCollection(new EmbeddedFontCollection(setting.Key, setting.Source)));
    }
    public class FontSettings
    {
        public string DefaultFontFamily = "fonts:AvaloniaApplication1FontFamilies#Alibaba PuHuiTi";
        public Uri Key { get; set; } = new Uri("fonts:AvaloniaApplication1FontFamilies", UriKind.Absolute);
        public Uri Source { get; set; } = new Uri("avares://AvaloniaApplication1/Assets/Fonts", UriKind.Absolute);
    }
}

然后,在此处引用即可,其中 DefaultFontFamily 的内容,我并没有深入,大体分为了三部分

fonts:AvaloniaApplication1FontFamilies#Alibaba PuHuiTi

fonts:  //字体标识
AvaloniaApplication1FontFamilies#   //自定义字体家族
Alibaba PuHuiTi //字体家族名称 Alibaba PuHuiTi 3.0 65 Medium (Alibaba PuHuiTi )就可以了

修改后,重新发布麒麟

可以看到已经能运行了。

git地址

https://github.com/kesshei/AvaloniaDemo
https://gitee.com/kesshei/AvaloniaDemo

资源链接

https://www.alibabafonts.com/#/font
https://fontforge.org/en-US/downloads/windows-dl/

参考链接

https://www.cnblogs.com/wdw984/p/17717864.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有了它,Python性能瓶颈消失!

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/#1 作为一名互联网行业的Python工程师&#xff0c;你是否也遇到过解释型语言在处理大量数据时速度较慢、内存占用高、并行处理困难、调试复杂、扩展性差和性能瓶颈等各种…

OpenCV-模板匹配多个目标

文章目录 一、基本概念二、基本步骤1.图像准备2.图像预处理3.执行模板匹配4.定位匹配区域5.处理多个匹配6.优化和验证 三、代码实现1.图片读取2.图像预处理3.模板匹配4.绘制矩形框 三、总结 模型匹配&#xff08;Model Matching&#xff09;是一个广泛应用的概念&#xff0c;其…

练练演活姜迎紫 入围金鹰奖提名演技派实至名归

近日&#xff0c;悬疑剧《雪迷宫》正在CCTV-8热播&#xff0c;演员练练凭借其精湛的演技演活姜迎紫一角&#xff0c;塑造的大嫂形象深入人心&#xff0c;赢得了观众的一致好评&#xff0c;成为该剧的一大亮点&#xff0c;成功闯入“内娱大嫂”的赛道。而近日&#xff0c;练练也…

贪心+滑窗+递推,LeetCode 2555. 两个线段获得的最多奖品

一、题目 1、题目描述 2、接口描述 python3 ​ class Solution:def maximizeWin(self, prizePositions: List[int], k: int) -> int:cpp ​ class Solution { public:int maximizeWin(vector<int>& prizePositions, int k) {int n prizePositions.size();std…

windows通过wsl2安装linux系统之Ubuntu,傻瓜式安装

期望通过每一次分享&#xff0c;让技术的门槛变低&#xff0c;落地更容易。 —— around 目录 1.基础环境和要求2.安装wsl23.安装linux系统4.迁移linux系统挂载5.配置linux账号密码6.配置ssh登录方式待续… 前言 为什么要在windows上安装linux&#xff0c;这个问题当你是研发…

Kubernetes动态分配存储卷组件 nfs-subdir-external-provisioner

Kubernetes动态分配存储卷组件 nfs-subdir-external-provisioner 存储组件 nfs-subdir-external-provisioner 是一个存储资源自动调配器&#xff0c;它可用现有的 NFS 服务器通过持久卷声明来支持 Kubernetes 持久卷的动态分配&#xff0c;自动创建的文件夹将被命名为 n a m …

Note24091101_基恩士日期获取相关测试01

基恩士日期获取相关测试 1、SEC和RSEC的使用&#xff1a; 资料如图&#xff1a; 要点提示&#xff1a;SEC和RSEC成对使用。 日期转秒&#xff0c;秒转日期测试如图所示&#xff1a; 2. LDWK与LDWKB星期接点的使用示例&#xff1a; 资料如图&#xff1a; 仿真如图&…

chapter14-集合——(List)——day18

目录 518-Set接口方法 518-Set接口方法

Rickdiculously Easy靶场渗透测试

靶机下载地址 https://www.vulnhub.com/entry/rickdiculouslyeasy-1,207/ 一.信息收集 1.端口扫描 nmap 172.16.1.20 -p- -sV 发现还扫描出一个flag 2.目录扫描 二.获取shell和提权 1、访问靶机IP地址 2、拼接并访问robots.txt文件 3、逐个访问&#xff0c;发现cgi-bin/tr…

‌移动管家手机智能控制汽车系统

‌ 手机可以通过下载特定的应用程序来控制汽车系统&#xff0c;实现远程启动、锁/解锁车门、调节车内温度等功能。‌ ‌ 手机智能控制汽车系统主要通过下载并安装特定的APP来实现。‌ 首先&#xff0c;用户需要确定自己的手机系统是安卓还是苹果版&#xff0c;然后前往应用…

图像和文本统一识别

图像和文本统一识别&#xff08;UNIT&#xff09;是一种尝试将图像识别和文本识别任务统一到单一模型中的技术。这种方法的目标是提高模型在处理包含文本信息的图像时的效率和准确性&#xff0c;从而使模型能够更好地理解和处理视觉内容中的文本信息。 使用的技术&#xff1a;…

浮毛危害人体健康?希喂、安德迈、有哈宠物空气净化器吸毛测评

养宠之前了解清楚相关的知识&#xff0c;这既是对宠物负责&#xff0c;也是对我们自己负责。宠物最让铲屎官头疼的就是毛发问题&#xff0c;大量脱落的毛发会带来繁重的清理任务&#xff0c;同时飘在空中浮毛还是潜藏在身边的健康”杀手“。浮毛微小、质量轻&#xff0c;容易随…

JAVA 使用POI实现单元格行合并生成

预期效果 maven引用 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency>Java代码实现 功能实现 private boolean callExcel(List<MColumnValueVo&g…

Nignx 增加权限(windows)

Nignx 增加权限&#xff08;windows&#xff09; 1、nginx增加权限配置 问题描述&#xff1a; windows下路径含有空格和路径符号产生的问题 server {listen 9025;server_name localhost;# 验证时的提示信息auth_basic "请输入用户和密码"; # 认证文件auth_b…

鸿蒙界面开发——组件(7):组件导航 页面路由

组件导航 (Navigation)(推荐) Navigation() Navigation(pathInfos: NavPathStack)Navigation是路由容器组件&#xff0c;一般作为首页的根容器&#xff0c;包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。Navigation组件适用于模块内和跨模块的路由切换&#xff0c…

【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs

【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs Introduction方法 使用传统GANS建模去噪分布理解模式覆盖率 Paper&#xff1a;https://arxiv.org/abs/2112.07804 Code&#xff1a;https://github.com/NVlabs/denoising-diffusion-…

大模型LLM部署学习

1、推理工具vLLM vLLM使用指北 https://zhuanlan.zhihu.com/p/685621164 VLLM官方文档 Welcome to vLLM! — vLLM 2、RAG&#xff08;检索增强生成&#xff09; https://zhuanlan.zhihu.com/p/675509396 RAG就是通过检索获取相关的知识并将其融入Prompt&#xff0c;让大模…

企业预算管理的数字化转型

在当今激烈的市场竞争中&#xff0c;企业面临着前所未有的挑战&#xff0c;尤其在成本控制和资源配置方面&#xff0c;预算管理成为企业成功运营的关键。然而&#xff0c;传统的预算管理方式&#xff0c;尤其依赖于Excel等工具的操作&#xff0c;随着企业规模的扩大和业务复杂度…

13步指南:如何建立品牌社区(附真实案例)

如果你正在寻找增强客户忠诚度、降低营销费用&#xff0c;并直接从客户那边获取创新想法的方法&#xff0c;那么创建一个品牌社区可能非常适合你。在这里&#xff0c;我们还推荐使用光年AI&#xff0c;将两者结合可以事半功倍。 例如&#xff0c;丝芙兰的美妆爱好者社区自2017…

SAP Fiori UI5-环境搭建-2022-2024界面对比

文章目录 一、Fiori项目初始化实际操作第一步&#xff1a;新建文件夹&#xff08;项目文件&#xff09;第二步&#xff1a;打开我们项目第三步&#xff1a;打开终端 部署环境第四步: XML中新增文本 二、 2023年Vscode中Fiori界面三 、2024年Vscode中Fiori界面 一、Fiori项目初始…