C# Label中字体显示不同颜色

1.首先激活Label的Paint事件

2.在Paint事件中进行计算

一个汉字所占用的高度和宽度

例:第一个字符为汉字

var size1 = TextRenderer.MeasureText(str.Substring(0, 1), lbl.Font)
var size2 = TextRenderer.MeasureText(str.Substring(0, 2), lbl.Font)

int width = size2.width - size1.width;

int height = size1.height;

同理求得  标点/字母/数字 的高度和宽度(高度与汉字的高度相同,宽度不同,需要额外进行计算,若只有汉字,没有标点,可以不进行该处计算)

注:str为Label的Text内容

     lbl为Label的Name

3.在Paint事件中进行计算,获取指定不同颜色字符串位置

string strTemp = str.Substring(0, str.IndexOf(strContent))
int length = strTemp.length;

注:str为Label的Text内容

     strContent为指定不同颜色字符串

     strTemp为指定不同颜色字符串前面的字符串

 

     length为strTemp字符串的宽度

区分strTemp字符串中汉字的数量以及 字母/数字/标点 的数量从而计算获得strContent字符串在Label中的x坐标位置

Point pointTemp = new Point(count * width + countSym * widthSym, height);

注:pointTemp为指定不同颜色字符串在Label中的坐标位置

     count 为指定不同颜色字符串前方字符串中汉字的数量

     width为汉字的宽度

     countSym为同理求得前方字符串中 字母/数字/标点 的数量

     widthSym为同理求得 字母/数字/标点 的宽度

4.为指定不同颜色字符串重新上色

TextRenderer.DrawText(e.Graphics, strContent, lbl.Font, pointTemp, Color.Red);

注:strContent 为指定不同颜色字符串

       lbl为Label的Name

       pointTemp为指定不同颜色字符串在Label中的坐标位置

       Color.Red为指定的颜色

补充:若Label内容中有多处不同颜色的字符串要标注,可以重复上诉内容。或进行循环,或进行多处判断。

posted @   大师兄被妖怪抓走了  阅读(2335)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示