Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 使用graphics.DrawString方法绘制时剪切的文本_C#_Winforms_Graphics_Drawing - Fatal编程技术网

C# 使用graphics.DrawString方法绘制时剪切的文本

C# 使用graphics.DrawString方法绘制时剪切的文本,c#,winforms,graphics,drawing,C#,Winforms,Graphics,Drawing,我正在使用graphics.MeasureString方法测量文本大小。根据测量的文本大小,我使用graphics.MeasureString绘制字符串。但在这方面,我使用StringFormat来测量和绘制字符串。但是我在一些文本中发现了文本剪辑问题,比如“left” 请查找下面的代码片段 string text = "Left"; Font font = new System.Drawing.Font("Segoe UI Semibold", 9F); StringFormat format

我正在使用graphics.MeasureString方法测量文本大小。根据测量的文本大小,我使用graphics.MeasureString绘制字符串。但在这方面,我使用StringFormat来测量和绘制字符串。但是我在一些文本中发现了文本剪辑问题,比如“left”

请查找下面的代码片段

string text = "Left";
Font font = new System.Drawing.Font("Segoe UI Semibold", 9F);
StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100, format);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width, size.Height), format);
请在下面的屏幕截图中查找文字剪辑


你能建议如何解决这个问题吗?

试试下面的方法。我已从代码中删除了
StringFormat
。它起作用了

string text = "Left";
Font font = new Font("Segoe UI Semibold", 9F);
//StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width, size.Height));
Edit1

我已根据OP的要求修改了答案,以使用
StringFormat
enum

string text = "Left";
Font font = new Font("Segoe UI Semibold", 9F);
StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100, format);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width + 5, size.Height), format);

尝试以下方法。我已从代码中删除了
StringFormat
。它起作用了

string text = "Left";
Font font = new Font("Segoe UI Semibold", 9F);
//StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width, size.Height));
Edit1

我已根据OP的要求修改了答案,以使用
StringFormat
enum

string text = "Left";
Font font = new Font("Segoe UI Semibold", 9F);
StringFormat format = new StringFormat(StringFormatFlags.NoWrap);
SizeF size = e.Graphics.MeasureString(text, font, 100, format);
e.Graphics.DrawString(text, font, new SolidBrush(Color.Black), new RectangleF(10, 10, size.Width + 5, size.Height), format);

你的绘图空间够大吗?你的e指的是哪里?这确实很奇怪。请注意,该标志不是必需的,除非您实际使用了一个大的多行矩形,因此可以将其禁用。或者您可以在宽度上添加1,这似乎是它所需要的全部!?!你的绘图空间够大吗?你的e指的是哪里?这确实很奇怪。请注意,该标志不是必需的,除非您实际使用了一个大的多行矩形,因此可以将其禁用。或者您可以在宽度上添加1,这似乎是它所需要的全部!?!如果您有一个未定义的变量
格式
?@SkryptX抱歉,我忘了删除它。我已经修改了answerHi@balaguruntahanmarimuthu,我已经在我的控件中使用了上面的代码,因为我公开了一些属性来允许或忽略换行文本。如果禁用换行符,则不应将文本换行到下一行。因此,我必须使用StringFormat=newStringFormat(StringFormatFlags.NoWrap)来实现我的要求。那么,在不删除stringFormat的情况下,有没有可能解决这个问题?@Jagadeesan请查看修改后的答案。@Balaguruntanmarimuthu,我无法手动增加宽度。因为这个问题只发生在一些字体中。因此,当手动增加宽度时,会导致一些其他问题。当您有未定义的变量
格式
,这应该如何工作?@SkryptX抱歉,我忘了删除它。我已经修改了answerHi@balaguruntahanmarimuthu,我已经在我的控件中使用了上面的代码,因为我公开了一些属性来允许或忽略换行文本。如果禁用换行符,则不应将文本换行到下一行。因此,我必须使用StringFormat=newStringFormat(StringFormatFlags.NoWrap)来实现我的要求。那么,在不删除stringFormat的情况下,有没有可能解决这个问题?@Jagadeesan请查看修改后的答案。@Balaguruntanmarimuthu,我无法手动增加宽度。因为这个问题只发生在一些字体中。因此,当手动增加宽度时,将导致其他一些问题。