1

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

我已经设法使用 DrawString 方法根据需要覆盖文本,但问题是文本不像标签。它更厚,混叠并且由于某种原因是黑色的。

我应该如何更改我的代码以使用 DrawString 方法(相同的字体、大小、前景色)复制标签的外观?

在此处输入图像描述

和代码:

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

2 回答 2

4

尝试使用TextRenderer类:

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

也保留TextRenderingHintasSystemDefault并使用与标签相同的字体大小。

于 2012-07-09T08:07:43.017 回答
0

标签的标准文本大小为 8.25 磅,或大约 11 像素。您的 17 像素大小导致文本大小为 13 pt。

尝试使用这个

 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);
于 2012-07-09T08:09:00.830 回答