尝试调整矩形大小时,矩形的宽度增加得比应有的多
Rectangle's width increasing more than it should while trying to resize the rectangle
我觉得标题不对。但是请查看下面的图片以获得更好的演示。
我有一个适合其中文本的矩形。我想要做的是,如果矩形的高度大于屏幕,那么矩形应该调整大小。
调整大小如下:将高度设置为屏幕高度,增加宽度,尝试适应文本,重复。
这是解析我的文本的方法,它 returns 适合给定宽度的矩形的字符串。
private String parseText(String text, int Width)
{
String line = String.Empty;
String returnString = String.Empty;
String[] wordArray = text.Split(' ');
int i = 1;
foreach (String word in wordArray)
{
if (Font.MeasureString(line + word).Length() > Width)
{
returnString = returnString + line + '\n';
line = String.Empty;
i++;
}
line = line + word + ' ';
}
this.Size = new Size(Size.Width, (int)Font.MeasureString(returnString + line).Y);
return returnString + line;
}
这部分效果很好。但是,如果文本超过高度,文本将绘制在矩形之外。
所以我添加了这个:
public string Text
{
get { return text; }
set
{
temp = parseText(value.Replace("\n", ""), Size.Width);
while(Size.Height > Viewport.Height)
{
Size = new Size(Size.Width + 5, Viewport.Height);
temp = parseText(value, Size.Width);
}
text = temp;
}
}
这是我的问题:
Part 1: Text is ok. Does not hit the screen's edge
Part 2: Right after hitting the screen edge by adding a bunch of 'hello'
Part 3: Adding one more "hello" properly fixes the issue.
第 2 部分发生了什么?它是如何调整大小的?为什么在第 3 部分修复了它?
注意:无论我在此处添加什么:Size = new Size(Size.Width + 5, Viewport.Height);
屏幕的 +5 或 5%,或者 20% 或 200%,它仍然会调整为相同的大小。
评论了解更多信息。谢谢
通过在 temp = parseText(value, Size.Width);
中添加 value.Replace("\n", "")
进行修复
我是在 while 循环之前这样做的,但不是在循环内部。因此,文本得到一堆新行,当再次调用时,新行在 while 循环之前消失了。
它应该是这样的:temp = parseText(value.Replace("\n", ""), Size.Width - (int)LeftMargin);
我觉得标题不对。但是请查看下面的图片以获得更好的演示。
我有一个适合其中文本的矩形。我想要做的是,如果矩形的高度大于屏幕,那么矩形应该调整大小。
调整大小如下:将高度设置为屏幕高度,增加宽度,尝试适应文本,重复。
这是解析我的文本的方法,它 returns 适合给定宽度的矩形的字符串。
private String parseText(String text, int Width)
{
String line = String.Empty;
String returnString = String.Empty;
String[] wordArray = text.Split(' ');
int i = 1;
foreach (String word in wordArray)
{
if (Font.MeasureString(line + word).Length() > Width)
{
returnString = returnString + line + '\n';
line = String.Empty;
i++;
}
line = line + word + ' ';
}
this.Size = new Size(Size.Width, (int)Font.MeasureString(returnString + line).Y);
return returnString + line;
}
这部分效果很好。但是,如果文本超过高度,文本将绘制在矩形之外。 所以我添加了这个:
public string Text
{
get { return text; }
set
{
temp = parseText(value.Replace("\n", ""), Size.Width);
while(Size.Height > Viewport.Height)
{
Size = new Size(Size.Width + 5, Viewport.Height);
temp = parseText(value, Size.Width);
}
text = temp;
}
}
这是我的问题:
Part 1: Text is ok. Does not hit the screen's edge
Part 2: Right after hitting the screen edge by adding a bunch of 'hello'
Part 3: Adding one more "hello" properly fixes the issue.
第 2 部分发生了什么?它是如何调整大小的?为什么在第 3 部分修复了它?
注意:无论我在此处添加什么:Size = new Size(Size.Width + 5, Viewport.Height);
屏幕的 +5 或 5%,或者 20% 或 200%,它仍然会调整为相同的大小。
评论了解更多信息。谢谢
通过在 temp = parseText(value, Size.Width);
value.Replace("\n", "")
进行修复
我是在 while 循环之前这样做的,但不是在循环内部。因此,文本得到一堆新行,当再次调用时,新行在 while 循环之前消失了。
它应该是这样的:temp = parseText(value.Replace("\n", ""), Size.Width - (int)LeftMargin);