Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#不需要的抽绳字母间距_C#_Winforms - Fatal编程技术网

c#不需要的抽绳字母间距

c#不需要的抽绳字母间距,c#,winforms,C#,Winforms,我从文本框组件中获得了一些文本,例如“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。之后,我隐藏这个文本框,在同一个地方用相同的OpenSans字体用DrawString绘制文本。但我会得到这样的东西“aaaaaaaaaa”。空格更小,但仍然可见,字符串的第一部分很好。我想隐藏t

我从文本框组件中获得了一些文本,例如
“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。之后,我隐藏这个文本框,在同一个地方用相同的OpenSans字体用DrawString绘制文本。但我会得到这样的东西<代码>“aaaaaaaaaa”
。空格更小,但仍然可见,字符串的第一部分很好。我想隐藏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);
示例应用程序。首先是文本框,然后是标签,最后是抽绳


考虑使用
标签
控件而不是绘图文本。它可以为您处理图形,并以更简单的方式提供更多的控制

尽管许多标签看起来很难看,但正如您所看到的,绘图可能会变得非常复杂,并且需要一种高度规范的OO方法来编写无错误的组件,例如图控件,而不引入一些难以修复的错误。这两种方法都是可行的,但绘图肯定会更加困难,而且可能需要更长的时间。如果禁用的标签不影响外观或使用,它们将更易于管理

隐藏
文本框
时,可以显示
标签


如果必须绘制字符串,请确保在绘制字符串之前清除该区域。您看到的额外a可能是以前绘制的未擦除的残片。Graphics.Clear(color)是用于清除整个窗体或控件或Graphics.FillRectangle(画笔、颜色)的方法,如果您只需要清除一个区域。

请显示您用于DrawString的代码,即您在此网站上使用的参数值?Winforms?WPF?
新字体(…)
新SolidBrush(…)
是一次性的,不应该像那样匿名创建。更好:
使用(var f=new Font(…))使用(var b=new SolidBrush(…){…}
我们需要更多的代码,尤其是如何调用代码!此抽绳是图表程序的一部分。一种形式可以有很多字符串。你可以画字符串,这更具挑战性。清除背景首先解决问题了吗?