Skip to content

Commit 29130cc

Browse files
committed
fix: 宽高计算有误差的bug
1 parent f1cd2a5 commit 29130cc

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

llcomNext/LLCOM/Services/Utils.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,20 +229,27 @@ public static (int, int) CalculateSize(double width, double height, string font,
229229
TextSize = (float)fontSize
230230
};
231231

232-
//计算出一行能放下多少个字符,暂时用最宽的字符来计算
232+
// 使用二分法计算出一行能放下多少个字符
233233
int columns = 1;
234-
for(columns = 1; columns < 9999; columns++)
234+
int low = 1, high = 9999;
235+
char testChar = 'W'; // 测试字符
236+
while (low <= high)
235237
{
236-
var realWidth = paint.MeasureText(new string('W', columns));
238+
int mid = (low + high) / 2;
239+
var realWidth = paint.MeasureText(new string(testChar, mid));
237240
if (realWidth > width)
238241
{
239-
columns--;
240-
break;
242+
high = mid - 1;
243+
}
244+
else
245+
{
246+
columns = mid;
247+
low = mid + 1;
241248
}
242249
}
243250

244-
//计算出能放下多少行
245-
var charHeight = Math.Abs(paint.FontMetrics.Ascent - paint.FontMetrics.Descent + paint.FontMetrics.Leading);
251+
//计算出能放下多少行 TODO)) 待修正
252+
var charHeight = paint.FontSpacing;
246253
int rows = (int)(height / charHeight);
247254

248255
//注意不要让行数和列数为0

0 commit comments

Comments
 (0)