gpt4 book ai didi

c - 使用 wordwrap 2 的最佳消息框大小

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:33 25 4
gpt4 key购买 nike

有一个固定大小的字符和一个应该将整个单词包装到下一行的文本,计算应该最接近正方形的拟合中心正方形的最佳算法是什么占用最少的空间并且对用户来说看起来不错?

屏幕是这样定义的

#define max_width 1024
#define max_height 768
#define char_width 10
#define char_height 16

计算生成的换行字符大小的函数

void calculate_wrapped_text_size( const char *text, int box_width_in_px, int &width_in_chars, &height_in_chars )
{
...
}

所以给定一个输入Line1 text longtext longertext anytext\nLine2 <... ...> 它将计算适合给定宽度的换行文本

void find_optimal_size( const char *text, int &optimal_width_in_px, int &optimal_height_in_px )
{
...
}

有没有什么标准的方法可以计算出最佳的宽度和高度尺寸,从而使它看起来最适合用户?我想找到最小面积框的路径,然后迭代到边上最小差异的大小?

最佳答案

你想的“最小面积框”肯定只是一条线——这不是你想要的。

首先,检查您是否需要自己编写换行算法,因为大多数 GUI 工具包(无论是 native 的还是跨平台的)都可以为您完成这项工作。

如果您需要自己执行此操作,请这样做:计算您希望允许的最大线宽。基于显示窗口的宽度或基于该窗口中其他小部件的布局。

然后对于每一行:写到一个单词超过最大宽度,该单词是第一个需要下一行的单词。

您必须考虑一些细节:首先,您的字母是否都具有相同的宽度(这将使字宽计算更容易)以及您认为哪些字符是字边界(空格、制表符、"-").

有一些极端情况需要考虑,例如如果窗口太窄以致某个特定单词即使是该行的第一个单词也放不下怎么办:上面的算法只会继续添加越来越多的行;你必须在算法中添加一个特殊情况,如果一个词是该行的第一个词,它可能不会被自动换行,而是必须被字符换行,即尽可能多地在行中写入字符,然后留在下一行。

关于c - 使用 wordwrap 2 的最佳消息框大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com