我需要在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);
答案 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);