使用自定义字体在标签中绘制文本时参数无效

2023-12-07

我有带有自定义字体和计时器的标签,它们会更改标签中的值。我的应用程序开始最小化。当我显示应用程序时,有时会显示异常,并且标签中的文本不是红十字。

在这里我尝试调用异步方法来更改标签文本

private void timer1_Tick(object sender, EventArgs e)
    {
        // create a delegate of MethodInvoker poiting to showTime function.
        MethodInvoker simpleDelegate = new MethodInvoker(showTime);
        // Calling showTime Async
        simpleDelegate.BeginInvoke(null, null);
    }

字体加载

public Form1()
    {
        InitializeComponent();

        SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch); //event handler for windows lock

        File.WriteAllBytes(appPath + "\\font.ttf", Resources.font); //copy font from resources

        try
        {
            PrivateFontCollection pfc = new PrivateFontCollection();
            pfc.AddFontFile(appPath + @"/font.ttf");
            label1.Font = new Font(pfc.Families[0], 11, FontStyle.Bold);
        }
        catch
        {
            MessageBox.Show("Failed to load nice font." + "\r\n" + "Using standart font instead.", "Time app", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }

    }

这是标签 tet 更改的方法

private void showTime()
    {
        label1.Text = time.ToString();
    }

*****


问题是PrivateFontCollection实例中的pfc变量超出范围,并且有时在第一次绘制控件之前收集(这似乎之后获得了对实例的强引用)。

将实例移到方法之外以防止 GC 收集它:

class Form1 : Form
{
    readonly PrivateFontCollection _pfc = new PrivateFontCollection();
    public Form1()
    {
        ...

        _pfc.AddFontFile(appPath + @"/font.ttf");

        ...
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用自定义字体在标签中绘制文本时参数无效 的相关文章

  • 了解 VerQueryValue

    在 MSDN 上 我注意到 VerQueryValue 函数的以下内容 lplp缓冲区 输出 低电压空洞当此方法返回时 包含指向 pBlock 指向的缓冲区中所请求版本信息的指针的地址 当关联的 pBlock 内存被释放时 lplpBuff
  • Excel的解析路径

    其实我想问以下问题 对于位于 目录中定义的 PATH 怎么能 我找出这些目录中的哪个 找到了 因为我需要使用 Process Run 从 C 运行 Excel 并且只需指示 Excel 即可正常工作 Windows 似乎知道在哪里可以找到它
  • 如何在 C++ 中对四元结构进行有效排序?

    我有一个包含 x y z 和 w 成员的结构 如何高效排序 在 C 中首先按 x 然后按 y 按 z 最后按 w 如果你想实现字典排序 那么最简单的方法是使用std tie实现小于或大于比较运算符或函子 然后使用std sort http
  • 如何通过实体键添加/删除与实体框架的多对多关系?

    I tried using Entities e new Entities EntityKey key new EntityKey Entities Users UserId 20 User user new User EntityKey
  • 用户无法安装单击一次应用程序

    我有一个相对简单的支持应用程序 我选择通过单击一次将其部署给我们的支持人员 我认为它仍然被称为 Click Once 我在 VS2008 中使用项目属性的发布选项卡 一些用户已成功点击该网址 下载并运行该应用程序 某一特定用户不能 他安装了
  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • 如何有效地左填充字节数组

    假设我有一个数组 LogoDataBy byte 0x00000008 0x00000000 0x41 0x00000001 0x42 0x00000002 0x43 0x00000003 0x44 0x00000004 0x31 0x00
  • 如何在方法模板中使用模板类型的引用传递参数?

    我目前正在努力编译以下代码 首先是包含带有方法模板的类的头文件 ConfigurationContext h class ConfigurationContext public template
  • 获取不带波形符的泛型类名称[重复]

    这个问题在这里已经有答案了 我正在尝试获取类型名称T使用这个 typeof T Name 班级名称是ConfigSettings 而不是返回ConfigSettings它正在返回ConfigSettings 1 有什么具体原因吗 我怎样才能
  • MouseDoubleClick 事件不会冒泡

    我的场景经过简化 我有一个包含员工行的 ListView 在每个员工行中 都有 增加 和 减少 按钮来调整他的工资 假设在我的程序中 双击 员工 行意味着 解雇此人 The problem是当我快速单击 增加 时 这会触发 ListView
  • “已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。”

    我正在开发需要连接到另一个数据库以获取一些数据的应用程序 为此 我决定使用 SqlConnection reader 等 我需要执行一些查询 例如首先我需要获取某个用户的卡 ID 之后我需要通过该卡 ID 获取一些数据 这是我的代码 reg
  • C 风格强制转换与内在强制转换

    假设我已经定义了 m256d x我想提取低 128 位 我会做 m128d xlow mm256 castpd256 pd128 x 然而 我最近看到有人这样做 m128d xlow m128d x 是否有用于演员的首选方法 为什么要用第一
  • gcc 删除内联汇编代码

    看起来 gcc 4 6 2 删除了它认为函数中未使用的代码 test c int main void goto exit handler asm volatile jmp 0x0 exit return 0 拆解main 0x0804840
  • 获取进程的所有 DLL

    我想获取为给定进程加载的所有 dll 的列表 我目前正在使用 NET框架4 0 我知道有一个bug https connect microsoft com VisualStudio feedback details 546430 syste
  • 扩展一个类

    编辑回答 虽然我最初的问题并没有完全按照康拉德 鲁道夫提供的答案所解决的方式解释我的需求 但他 无意或有意 基本上为我写了我想写的内容 类本身不会被扩展 但通过使类了解新函数来扩展其功能 这些新函数允许它 类 处理更广泛的问题 我非常感谢您
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 当一种语言是另一种语言的平行超集时,这意味着什么?

    我正在阅读关于实时并发 C 的期刊文章 http link springer com article 10 1007 2FBF00365999 并且它在摘要中提到 因此你们中的任何人都可以通过该链接查看上下文 Concurrent C 是
  • 通过开源 PCL 使用 API 查看 3D 点云

    我使用 ToF 飞行时间 相机来获取 XYZ 格式的深度数据 为了实现 3D 点云的可视化目的 我想使用开源 PCL 提供的 API 网址为http pointclouds org documentation tutorials pcl v
  • 错误:C# 尝试读取或写入受保护的内存

    我很难纠正这个错误 该应用程序在 4 台不同的机器上进行了测试 在其中 3 台上运行良好 但一台 Vista PC 在尝试通过 WebBrowser1 打开页面时出现此错误 解决这个问题的任何帮助对我都会非常有帮助 System Acces
  • 如何将 IDispatch* 放入托管代码中

    我一直在考虑尝试使用 C 编写一个实现 OPOS 服务对象的 COM 对象 我已经使用自动化和 MFC 在 C 中完成了它 这并不太困难 所以我坚持尝试将其转换为一种方法 我将排除界面中的其他方法 因为它们很简单 或者我希望如此 id 6

随机推荐

  • 如何在 GAC 中注册 .NET DLL 文件?

    我做了一个 NET DLL文件 我想将其注册到GAC 我已经使用过这个命令Windows Server 2003命令提示符 C Path of dll gt gacutil i dllname dll gacutil is not reco
  • @Validated 服务无法自动装配自身

    如果 Service 类使用 Validated 注释进行注释 则同一类无法自动装配自身 Service Validated public class SomeService Autowired private SomeService so
  • 使用表单中的数据通过宏更新数据库表

    我在 Libreoffice Base 中有一个表单 它连接到 歌曲 表 基本上是音乐数据库 我想做的是每次我选中 取消选中该表单上的复选框时 我希望每条记录的 已播放 字段与我当前在表格上要检查 取消检查的姓名和作者相同 我读到这样做的唯
  • 内存卡游戏wpf问题

    我有一个记忆卡游戏 我的绑定是 public ObservableCollection
  • 批处理文件如何运行程序并设置窗口的位置和大小?

    我有一个批处理文件 可以在我编写代码时为我设置桌面环境 该文件名为 SetEnv cmd它会打开另外 3 个窗口 设置为应用服务器部署目录的 Windows 资源管理器实例 Windows 资源管理器的第二个实例设置为写入我的部署文件的目录
  • 如何检测我的 iPhone 应用程序是否正在 iPad 上运行

    我有一个 opengl 应用程序 它在 RetinaDisplay 模式 双比例因子 下渲染得更好 并且我注意到 iPad 模拟具有低分辨率屏幕 正常比例因子 的 iPhone 应用程序 当我的 iPhone 应用程序在 iPad 上运行时
  • ASM - 使用 LocalVariableSorter 中的 newLocal 的奇怪 localVar 索引

    我正在通过以下方式添加新当地人newLocal from LocalVariableSorter 我添加本地变量的方法是一个带有长参数的实例方法 我要添加两个当地人 一个长的 一个物体 示例代码中没有其他局部变量 因此 我预计会有以下插槽
  • 无法隐式转换类型“int”?到 'int' - 在控制器上或在视图页面上

    在执行下面的代码时 我在控制器中收到此错误 无法隐式转换类型 int 到 int 存在显式转换 您是否缺少强制转换 出现错误t TOT QTY在我的控制器中 控制器 dcms from t in db ASN ITEM where t TO
  • 为什么Python随机生成相同的数字?

    我为我的作业写了这段代码 import random score random seed 1 for i in range 0 100 score append random randrange 0 21 for k in range 20
  • 使用 PIL 在 python 中打开并显示 .png 文件

    我需要打开一个 png 图像文件并显示它 我可以使用 PIL 打开该文件 from PIL import Image f Image open file png show 我收到一条错误消息 错误阻止了视频或图像的显示 错误代码 0x800
  • Web API 中的模型状态验证

    我有一个自定义模型验证器来验证并返回自定义验证消息 public void Validate Object instance Perfom validations and thow exceptions if any throw new V
  • Java如何规避Windows MAX_PATH WinAPI限制

    有谁知道Java如何能够绕过Windows MAX PATH限制 使用下面的代码 我能够在 Java 中创建一条非常长的路径 并且能够执行 I O 这在使用 Windows 时如果没有前缀 是不可能的 public static void
  • 迭代数据帧列表以删除特定行 Pandas

    在我之前的问题中我要求删除 Pandas 中的特定行 在帮助下 我删除了 1980 年之前的行 季节 列 包含年份 采用以下格式 2018 19 2017 18 This list would go till 1960 在之前的问题 链接
  • 在 jQuery 中获取列表元素内容的数组

    我有这样的结构 ul li text1 li li text2 li li text3 li ul 如何使用 javascript 或 jQuery 将文本获取为数组 text1 text2 text3 我之后的计划是将其组装成一个字符串
  • Elasticsearch/Nest - 将 MatchPhrase 与 OnFieldsWithBoost 结合使用

    在我今天的代码中 我正在进行这样的搜索 Query q gt q QueryString qs gt qs Query searchQuery OnFieldsWithBoost f gt f Add b gt b MetaTitle 5
  • Python/Pandas:如何读取 cp1252 中的 csv 并删除第一行?

    解决方案 查看答案 它不是以 CP1252 编码 而是以 UTF 16 编码 解决方案代码是 import pandas as pd df pd read csv my file csv sep t header 1 encoding ut
  • 选择预填充值时触发 Jquery 文本更改

    我正在将名字复制到姓氏字段中 这对于页面上的新名称非常有效 但是 输入几个名称后 浏览器会显示名称的历史记录 如果有任何预填充的名称或选择的旧名称 则不会触发此功能 如何将姓氏更新为名字已更改为的内容 document ready func
  • 如何在 Javascript 中过滤对象数组

    我正在尝试在 Javascript 中创建一个函数 这将允许我过滤不同候选人拥有的技能 我被告知这可以在 Javascript 中完成 名为 filterCandidateBySkill 的函数是我想要过滤候选人的地方技能 但我看过这个 并
  • qt 类中的服务器线程(需要互斥锁?)

    我制作了这个服务器类 它在新连接到来时启动一个线程 它在某些情况下工作正常 但不是很稳定 我正在尝试解决它的问题 我的调试器告诉我一些有关 qmutex 的信息 如果有人能发现问题 蒂 它通过信号和槽与父级连接并获取数据 这是标题 ifnd
  • 使用自定义字体在标签中绘制文本时参数无效

    我有带有自定义字体和计时器的标签 它们会更改标签中的值 我的应用程序开始最小化 当我显示应用程序时 有时会显示异常 并且标签中的文本不是红十字 在这里我尝试调用异步方法来更改标签文本 private void timer1 Tick obj