我从TextBox组件中获得了一些文本,例如"aaaaaaaaaaaaaaaaaaaaa"
。之后,我隐藏了这个TextBox,并使用相同的OpenSans字体在同一个地方绘制带有DrawString的文本。但我会得到这样的东西。 "aaaaaaaaaaaa a a a a a a"
。空间较小但仍然可见,字符串的第一部分是好的。我想隐藏textbox和DrawString之间的区别。问题出在哪儿?为什么会出现这些空格?
PointF point = new PointF(
(this.shift.x + cx + rec.position.x + padding) / s,
(this.shift.y + cy + rec.position.y + padding) / s
);
gfx.DrawString(rec.text, new Font(rec.font.FontFamily, rec.font.Size / s, rec.font.Style), new SolidBrush(rec.fontcolor), point);
示例应用程序。首先是文本框然后是标签,最后是DrawString。
答案 0 :(得分:2)
考虑使用Label
控件而不是绘制文本。它为您处理绘图,并以更简单的方式提供更多控制。
即使很多标签看起来很难看,但正如您所见,绘图可能会变得非常复杂,并且需要一种高度自律的OO方法来编写无错误的组件,例如图表控件,而不会引入几个难以修复的错误。这两种方法都是可行的,但绘图肯定会更难,可能需要更长时间。如果禁用的标签不会干扰外观或使用,它们将更容易管理。
隐藏TextBox
后,您可以显示Label
。
如果必须绘制字符串,请务必在绘制之前清除该区域。您看到的额外a可能是之前未被删除的抽奖的残余。 Graphics.Clear(color)是用于清除整个表单或控件的方法,如果只需要清除某个区域,则使用Graphics.FillRectangle(Brush,Color)。