首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何有效地保留.Net字体对象?

在.Net中有效地保留字体对象,可以通过以下步骤来实现:

  1. 在创建字体对象时将其添加到字典或集合中,以便可以在需要时重新使用它们。可以使用IDictionary<TKey, TValue>和HashSet<T>等字典和集合容器来存储字体对象。
  2. 创建时使用自定义IDictionary<TKey, TValue>或HashSet<T>.MakeSet()方法,以便在创建时自动保留唯一的对象。
  3. 跟踪字体对象的使用情况,并在不再需要它们时将其从字典或集合中移除。可以使用IDictionary<TKey, TValue>.Remove()或HashSet<T>.Remove()方法来移除对象。
  4. 使用StringBuilder或List<T>.Add(item)方法将字体对象添加到StringBuilder或List<T>列表中。这样可以确保对象被安全地保留,并且能够在使用它们之前将其删除。

以下是一个示例代码示例:

代码语言:csharp
复制
public static String GetFontString(string fontFamily) {
    Font font = new Font(fontFamily, 18);
    Dictionary<int, Font> fontDictionary = font.Dictionary.MakeSet();
    StringBuilder fontStringBuilder = new StringBuilder();

    foreach (KeyValuePair<int, Font> keyValuePair in fontDictionary) {
        string fontString = keyValuePair.Value.ToString();
        fontStringBuilder.Append(fontString);
    }

    return fontStringBuilder.ToString();
}

private static void Main(string[] args) {
    Dictionary<int, Font> fontDictionary = font.Dictionary.MakeSet(); // 创建使用唯一字体对象的集合
    string fontString = GetFontString("Microsoft YaHei"); // 获取包含所有字体对象的字符串

    fontDictionary.Remove(); // 删除不再使用的字体对象
}

在上述示例中,我们从font.Dictionary.MakeSet()方法创建一个唯一字体对象的集合,并使用GetFontString和foreach循环将所有字体对象序列化为字符串,保留在StringBuilder对象中。通过foreach循环将字体对象从字典集合中删除,以确保在不再使用它们时自动释放资源。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET的各种对象在内存中如何布局

在过去一段时间里,我陆陆续续写一些关于.NET对象类型布局的文章,其中包括值类型和引用类型的内存布局、字符串对象和数组的内存布局等,这里作一个简单的汇总。 [1] 如何计算一个实例占用多少内存?...[read more…] [4] 你知道.NET的字符串在内存中是如何存储的吗? 从“值类型”和“引用类型”来划分,字符串自然属于引用类型的范畴,所以一个字符串对象自然采用引用类型的内存布局。...[read more…] [5] .NET中的数组在内存中如何布局? 总的来说,.NET的值类型和引用类型都映射一段连续的内存片段。...[read more…] [6] 利用一段字节序列构建一个数组对象 《.NET中的数组在内存中如何布局? 》介绍了一个.NET下针对数组对象的内存布局。...既然我们知道了内存布局,我们自然可以按照这个布局规则创建一段字节序列来表示一个数组对象,就像《以纯二进制的形式在内存中绘制一个对象》构建一个普通的对象,以及《你知道.NET的字符串在内存中是如何存储的吗

23020
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象

    不过,有时需要写一些特别的异步方法,这时需要自己来实现一个可以异步等待的对象。 本文将讲述如何实现一个可等待对象,一个自定义的 Awaiter。...---- Awaiter 系列文章 入门篇: .NET 中什么样的类是可使用 await 异步等待的?...定义一组抽象的 Awaiter 的实现接口,你下次写自己的 await 可等待对象时将更加方便 .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?...实战篇: 在 WPF/UWP 中实现一个可以用 await 异步等待 UI 交互操作的 Awaiter .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter 可等待对象 我们希望大家在调用下面的...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布

    52610

    .NET Core采用的全新配置系统: “Options模式”下的配置是如何绑定为Options对象

    值得推荐的做法就是采用《.NET Core采用的全新配置系统[1]: 读取配置数据》最后演示的方式将相关的配置定义成一个Options类型,并采用与类型定义想匹配的结构来定义原始的配置,这样就能利用它们之间的映射关系将读取的配置数据绑定为...至于该方法具体的实现原理,我们会在后续的部分予以单独介绍,而目前介绍的重点是Options模式采用的API在背后是如何调用这个方法得到所需的Options对象的。...我们在回顾一下《.NET Core采用的全新配置系统[1]: 读取配置数据》演示的采用Options模式读取配置的例子。...>来说,对应的对象就直接通过一个Action对象来创建。...>委托对象通过调用Configuration对象的扩展方法Bind最终实现了配置绑定。

    675100

    CSS高级技巧讲解

    元素的显示与隐藏 display -- block;(转换为块元素&& 显示) none(隐藏 && 不保留原来的位置) -- 重要!...2.清除浮动 overflow -- hidden 内容超出的部分隐藏(重点的) scroll(强制出现滚动条样式) auto(根据内容多少来判断是否出现滚动条 ) 精灵技术 目的:为了有效地减少服务器接受和发送请求的次数...注意:字体图标是字体 不是图片 使用字体图标 1.把包包里面的font文件夹复制出来一份,放在我们项目根目录。...做法: 1.宽高为 零 2.四个边都要的,只保留我们需要的边框颜色,其他的 颜色透明即可。...webkit-box; /* 限制在一个块元素显示的文本的行数 */ -webkit-line-clamp: 3; /* 设置或检索伸缩盒对象的子元素的排列方式

    87630

    如何提升云计算数据保护的状态

    点击上方“蓝色字体”,选择 “设为星标” 关键讯息,D1时间送达! 如今,大多数数据保护解决方案使用公共云平台,以降低本地数据保护基础设施的成本。...数据保护中的云计算利用状况 许多供应商只使用云计算来存储备份数据集的精确副本,这有效地使公共云成为磁带的替代品,但不会缩小本地存储基础设施。...对象存储问题 对象存储是一种非常经济有效的存储数据的方法。它具有内置的扩展和持久性功能,使其成为长期数据保留的理想选择。然而,对象存储通常不适合作为生产应用程序的存储。...版权声明:本文为企业网D1Net编译,转载需注明出处为:企业网D1Net,如果不注明出处,企业网D1Net保留追究其法律责任的权利。...(来源:企业网D1Net) 如果您在企业IT、网络、通信行业的某一领域工作,并希望分享观点,欢迎给企业网D1Net投稿 投稿邮箱:editor@d1net.com

    94010

    边缘计算vs云计算:哪个更高效?

    点击上方“蓝色字体”,选择 “设为星标” 关键讯息,D1时间送达! 云计算为企业提供了在远程数据服务器上存储、管理和分析信息的机会。同时,云计算也具有一些缺点,例如数据处理延迟等。...不幸的是,由于设备的存储空间不足以保留接收到的数据,因此很多信息将被删除。 尽管云计算的主要缺点是处理速度还不快,但该技术提供了惊人的处理能力和存储空间。...物联网设备将能够更快地运行并有效地处理数据,而不会损失存储容量和处理能力。当然,目前,边缘计算似乎比云计算具有更多的优势,但是不应低估云计算的优势。 如今,网络的未来发展似乎介于边缘计算和云计算之间。...版权声明:本文为企业网D1Net编译,转载需注明出处为:企业网D1Net,如果不注明出处,企业网D1Net保留追究其法律责任的权利。...(来源:企业网D1net) 如果您在企业IT、网络、通信行业的某一领域工作,并希望分享观点,欢迎给企业网D1Net投稿 ? 投稿邮箱:editor@d1net.com 点击蓝色字体 ?

    1.8K11

    C# MemoryCache

    在.NET框架中,MemoryCache是一种强大的工具,用于存储对象,以便可以在需要时轻松访问它们。这样做有很多好处,包括减少数据库查询次数、节约资源和提高应用程序性能。...换句话说,如果有个缓存项在过去的一段时间内很少被访问,那么它将成为被移除的首选对象。 这种策略假定未来数据访问模式将类似于过去的数据访问模式,所以通常会优先保留最近频繁访问的数据。...如何使用MemoryCache?...在.NET框架中,MemoryCache是一种强大的工具,用于存储对象,以便可以在需要时轻松访问它们。这样做有很多好处,包括减少数据库查询次数、节约资源和提高应用程序性能。...换句话说,如果有个缓存项在过去的一段时间内很少被访问,那么它将成为被移除的首选对象。 这种策略假定未来数据访问模式将类似于过去的数据访问模式,所以通常会优先保留最近频繁访问的数据。

    35510

    JavaScript性能故事:选择可视化方法

    能够快速有效地传达问题。   能够有效地显示许多节点。 许多,许多,许多。   为了有效地创建基线,我们需要一些能够一目了然就能表示很多相关数据的东西。 我用来表示节点的两种工具是大小和颜色。...有了这个总体思路,如何传达问题这个难题也就迎刃而解了。结合Chrome堆配置文件的输出和我自己的经验,我知道节点自身大小和保留大小至关重要。...有了这个总体思路,如何传达问题这个难题也就迎刃而解了。结合Chrome堆配置文件的输出和我自己的经验,我知道节点自身大小和保留大小至关重要。...image.png   带有20万个节点的力导向图(图片来源:graphmap.net)   如果我的工具需要花费很长时间来布置堆,或者如果很难获得关于单个节点的相关诊断信息,那么它也不会比手工解析数据更有用...图片来源:Mike Bostock 和 Jeff Heer)   我在这里看到了一些潜在的优势 - 它具有力导向图的很多优点 - 圆形节点,彩色节点和相对大小的一目了然 - 但是却不像力导向图那样需要去计算对象之间的关联

    48620

    控制图像中的文字!AIGC应用子方向 之 图像场景文本的编辑与生成

    为解决这个问题,提出Diff-Text,一种基于训练的自由场景字体生成框架,适用于任何语言。 模型根据任何语言的字体和场景的文本描述生成逼真的图像。...基于观察生成图像中交叉注意力图对对象放置的影响,在交叉注意力层中引入了局部注意力约束来解决场景文本的不合理定位问题。此外,引入了对比图像级提示来进一步细化文本区域的位置并实现更准确的场景文本生成。...ecnuljzhang/brush-your-text PSGText: Stroke-Guided Scene Text Editing with PSP Module 场景文本编辑(STE)旨在替换图像中的文本,并保留原始文本的背景和样式...然而,目前的技术在生成编辑后的文本图像时面临着一个明显的挑战,即如何展示高度清晰和易读的编辑后的文本图像。这个挑战主要源于各种文本类型之间的内在多样性和复杂背景的复杂纹理。...这个专门网络设计用于巧妙地重建背景图像,有效地处理删除原始文本后留下的空白。这个过程在背景中保持视觉和谐和连贯性。

    38710

    【合合TextIn】智能文档处理系列—电子文档解析技术全格式解析

    这种格式的文件特点是简单和兼容性高,它不包含任何格式化信息(如字体大小、样式、颜色等)或嵌入的对象(如图片、表格等)。...它是一个复杂的二进制文件格式,旨在保存富文本属性(如字体、样式、格式化)和其他文档元素(如图表、图片、嵌入的对象等)。...格式化信息:定义文本的样式和排版,如字体大小、颜色、段落对齐方式等。OLE(对象链接与嵌入):用于嵌入或链接到其他文件和信息,如图表和图片。...4.2 解析关键点4.2.1 文件结构理解由于DOC文件的复杂性,首先需要理解其二进制文件结构,包括如何定位和解析文本内容、格式信息、嵌入的对象等。这通常需要对DOC格式的详细文档或规范有深入的了解。...6.2.3 样式和格式化信息XLSX文件支持复杂的样式和格式化,包括字体样式、单元格颜色、边框等。在某些情况下,保留这些样式信息对于保持数据的原始意图和可读性非常重要。

    36310

    《代码的未来》读书笔记:内存管理与GC那点事儿

    其中,红色背景白色字体对象为已标记的对象。重复这一阶段步骤,已标记的对象会被视为“存活”的对象,而没有被标记的对象就将被进行回收。   ③ 清除阶段: ?   ...最后,对象D和对象E引用数变为了0,所以需要被清除。   ③ 清除阶段: ?   所有引用计数变为0的对象都将被释放,“存活”的对象保留了下来。...那么,对分配不久的“年轻”对象进行重点扫描,应该就可以更有效地回收大部分垃圾。   ...对于不同的实现方式,可能还会划分更多的代,   在.NET中,CLR就将内存中的对象分为了三代,每执行N次0代的回收,才会执行一次1代的回收,而每执行N次1代的回收,才会执行一次2代的回收。...而如果用标记清除算法的话,则大多采用在对象上设置某种级别标志的方式。但是,被分配到更高的级别的代上后,该对象所占用的内存空间的时间也会随之增加,如何确保及时利用和释放的平衡点也是需要考虑的。

    42110

    flyweight设计模式_适配器模式菜鸟

    动机 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价—主要指内存需求方面的代价 如何在避免大量细粒度对象问题的同时,让外部客户仍然能够透明地使用面向对象地方式来进行操作...模式定义 运用共享技术有效地支持大量细粒度地对象。...实例 每一个字符都是一个字体 字体对象Font class Font{ private: //unique object key string key; //object...但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight主要解决面向对象的代价问题。一般不触及面向对象的抽象性问题。...flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的压力。在具体实现方面,要注意对象状态的处理 ”对象的数量太大“这一说法没有具体的定义 笔记。

    13010

    URL2Video:把网页自动创建为短视频

    正文字数:2584 阅读时长:4分钟 机器学习可以实现对网页内容的理解,并选取关键对象生成有趣的短视频。Google研究团队通过使用URL2Video可以将网页快速生成有创意的短视频。...利用这些信息,URL2Video解析网页,分析内容,选择视觉突出的文本或图像,同时保留它们的设计风格,并根据用户提供的视频规范进行组合。...网页分析 一个网页的URL,URL2Video会提取它的文档对象模型(DOM)信息和多媒体材料。...请注意它如何在从源网页面捕获的视频中对字体和颜色选择、时间和内容排序作出自动编辑决定的。 URL2Video从我们的Google搜索介绍页面(顶部)识别关键内容,包括标题和视频资源。...实验结果表明,URL2Video能够有效地从网页中提取设计元素,并通过引导视频创建的过程为设计师提供支持。

    3.9K10

    Word自动化(C# + Python)(持续更新中...)

    .NET)来访问POI的功能....2的字体设置, 但是通过run对象进行设置的标题1就不会受到影响, 来看图说话: [006y8mN6ly1g83qofih1ej30yq0qaq7a.jpg] 这样一来, 想要很好处理某段内容的风格,...然后你会发现, 合并之后, 把两份内容都保留了, 如果这是你需要的, 自然没有问题. 但是如果不是, 你就要思考内容合并的策略, 你不可能一个一个设置....一个比较合理的策略就是用临时变量保留你要的内容, 合并完成之后, 将临时变量内容覆盖合并后的内容. [006y8mN6ly1g83r7uacqrj31nm0a2wg3.jpg] ----- 最后 其实,...Microsoft.Office.Interop.Word是巨硬提供的com组件, 那么要如何使用它呢, 你要先装Windows, 再装Office, Office2013对应这个com组件的15.x版本

    1.9K00

    多云架构的3个常见性能挑战和解决方案

    多云架构可带来许多好处,但它们也会带来一些特殊的性能挑战,特别是如何设计和管理,很多部署多云的团队可能并没有注意多云架构中的性能瓶颈。...多云架构可带来许多好处,但它们也会带来一些特殊的性能挑战,特别是如何设计和管理,很多部署多云的团队可能并没有注意多云架构中的性能瓶颈。...换句话说,企业的工具必须认识到运行在不同云平台中的两个服务已连接并相互依赖,以便能够有效地向工作人员发出潜在问题的警报。...版权声明:本文为企业网D1Net编译,转载需注明出处为:企业网D1Net,如果不注明出处,企业网D1Net保留追究其法律责任的权利。...(来源:企业网D1net) 如果您在企业IT、网络、通信行业的某一领域工作,并希望分享观点,欢迎给企业网D1Net投稿 投稿邮箱:editor@d1net.com 点击蓝色字体 关注 您还可以搜索公众号

    1.2K10
    领券