使用DrawString方法复制标签

时间:2012-07-09 07:59:47

标签: c# .net winforms drawstring

我需要在Infragistics工具栏上绘制一个字符串,我不能使用标签,因为它的背景实际上不是透明的(见图)。

我已经设法使用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);

2 个答案:

答案 0 :(得分:4)

尝试使用TextRenderer类:

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

同时将TextRenderingHint保留为SystemDefault并使用与标签相同的字体大小。

答案 1 :(得分: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);