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內容中有多處不同顏色的字符串要標注,可以重復上訴內容。或進行循環,或進行多處判斷。