惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
Y
Y Combinator Blog
WordPress大学
WordPress大学
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
A
About on SuperTechFans
小众软件
小众软件
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
GbyAI
GbyAI
I
InfoQ
The GitHub Blog
The GitHub Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
C
Check Point Blog
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
量子位
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog

zodream梦想开源/个人编程日记

文件解析笔记-zodream梦想开源/个人编程日记 密码本开发笔记之读写与保存-zodream梦想开源/个人编程日记 SkiaSharp 把 pixel byte[] 转成 SKBitmap-zodream梦想开源/个人编程日记 nas 使用 Docker 安装 gogs-zodream梦想开源/个人编程日记 复制 android 手机中的文件到电脑-zodream梦想开源/个人编程日记 周报:寻找优质的周刊-zodream梦想开源/个人编程日记 开发日志:对Markdown的代码块新增引用来源支持-zodream梦想开源/个人编程日记 周报:怎么写技术类的教程文章-zodream梦想开源/个人编程日记 css display:flex 布局尺寸超出问题-zodream梦想开源/个人编程日记 周报:SEO优化的思考-zodream梦想开源/个人编程日记 Edge 浏览器不适用 Edge Image Viewer 打开图片 -zodream梦想开源/个人编程日记 SEO 学习笔记(一) 内容来源-zodream梦想开源/个人编程日记 PHP 实现双因素身份认证(2FA)-zodream梦想开源/个人编程日记 WPF MVVM 获取List 多选数据-zodream梦想开源/个人编程日记 Burp Suite 抓包-zodream梦想开源/个人编程日记 使用 indexnow 注意事项-zodream梦想开源/个人编程日记 angular 15 对指定页面进行访问限制-zodream梦想开源/个人编程日记 CSS 使用 column-count 实现瀑布流出现内容分割的解决办法-zodream梦想开源/个人编程日记 input 确认按键事件在手机端不生效-zodream梦想开源/个人编程日记 C# 使用socket 进行通讯-zodream梦想开源/个人编程日记 Maui开发中Windows应用开启管理员权限-zodream梦想开源/个人编程日记 Maui 中自定义控件-zodream梦想开源/个人编程日记 angular 14 使用 ng-template 实现tree 结构显示-zodream梦想开源/个人编程日记 c# 动态安装和卸载dll-zodream梦想开源/个人编程日记 慎用 CompositionTarget.Rendering-zodream梦想开源/个人编程日记 c# 重写 c++ 程序笔记:数据初始化-zodream梦想开源/个人编程日记 源码编译 aseprite-zodream梦想开源/个人编程日记 记录一下字符串分隔split各语言之间的不同-zodream梦想开源/个人编程日记 c# Gzip解码无头内容-zodream梦想开源/个人编程日记 Windows 10 查看内存占用-zodream梦想开源/个人编程日记
Godot 使用字体图标 例如: Iconfont、FontAwesome-zodream梦...
zodream · 2023-04-11 · via zodream梦想开源/个人编程日记

Godot 使用字体图标 例如: Iconfont、FontAwesome

新增一个控件 例如 IconLabl

新建一个场景,继承至用户界面,命名为 IconLabel

增加一个子控件 Label 设置Font .ttf 增加脚本

C# 版

using Godot;
using System;
using System.Text.RegularExpressions;

[Tool]
public partial class IconLabel : Control
{

    private string text;
    [Export]
    public string Text
    {
        get { return text; }
        set { 
            text = value;
            ApplyText();
        }
    }

    private int fontSize = 16;
    [Export]
    public int FontSize
    {
        get { return fontSize; }
        set { 
            fontSize = value;
            ApplyFontSize();
        }
    }

    private Label IconTb;

    public override Vector2 _GetMinimumSize()
    {
        return new Vector2(FontSize, FontSize);
    }

    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        IconTb = GetNode<Label>("Label");
        ApplyFontSize();
        ApplyText();
    }

    private void ApplyFontSize() {
        if (IconTb is null) {
            return;
        }
        if (fontSize > 0) {
            IconTb.AddThemeFontSizeOverride("font_size", FontSize);
        }
    }

    private void ApplyText() {
        if (IconTb is null) {
            return;
        }
        if (string.IsNullOrWhiteSpace(Text)) {
            IconTb.Text = string.Empty;
            return;
        }
        var text = Regex.Replace(Text, @"(&#x|\\u)([0-9a-f]+);?", match => {
            return Convert.ToChar(Convert.ToInt32(match.Groups[2].Value, 16)).ToString();
        }, RegexOptions.IgnoreCase);
        IconTb.Text = text;
        CustomMinimumSize = new Vector2(FontSize * text.Length, FontSize);
    }
}

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

支持 Xaml 和 十六进制写法

转载请保留原文链接: https://zodream.cn/blog/id/241.html