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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM