2012-07-09 46 views
1

我需要在Infragistics工具欄上繪製一個字符串,並且由於它的背景實際上不透明,因此我無法使用標籤(請參閱圖像)。使用DrawString方法複製標籤

我設法使用DrawString方法根據需要覆蓋文本,但問題是文本不像標籤。它更厚,別名和某種原因是黑色的。

我該如何改變我的代碼來使用DrawString方法(相同的字體,大小,前景色)複製標籤的外觀?

enter image description here

,代碼:

FontFamily fontFamily = new FontFamily("Microsoft Sans Serif"); 
       Font font = new Font(
        fontFamily, 
        17, 
        FontStyle.Regular, 
        GraphicsUnit.Pixel); 
       SolidBrush solidBrush = new SolidBrush(SystemColors.ControlText); 

       drawParams.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias; 
       drawParams.Graphics.DrawString("String Drawn with DrawString method", font, solidBrush, textEditorLoc.X, textEditorLoc.Y + 25); 

回答

4

嘗試使用TextRenderer類:

TextRenderer.DrawString(
    drawParams.Graphics, 
    "String Drawn with TextRenderer (GDI) method", 
    font, 
    new Point(textEditorLoc.X, textEditorLoc.Y + 25), 
    SystemColors.ControlText); 

也離開TextRenderingHintSystemDefault,並使用相同的字體大小爲標籤。

+0

我也有類似的問題。 'DrawString'方法與'DataGridView'中的'PaintCells'不同。字體更薄。 'TextRenderer.DrawString'解決了這個問題。 – 2014-06-28 09:33:58

0

標籤的標準文字大小是8,25點或大約11個像素。您的17像素的大小導致文本大小爲13磅。

嘗試使用此

FontFamily fontFamily = new FontFamily("Microsoft Sans Serif"); 
Font font = new Font(
        fontFamily, 
        8.25f, 
        FontStyle.Regular, 
        GraphicsUnit.Point); 
SolidBrush solidBrush = new SolidBrush(SystemColors.ControlText);    
e.Graphics.DrawString("String Drawn with DrawString", font, solidBrush, textEditorLoc.X, textEditorLoc.Y + 25);