我有兴趣找到一种方法来对齐以下文字:
期望的结果是将每个缩写的第一个字母分配,可变的空间量和冒号排列;例如
STR :0
CON :0
DEX :0
INT :0
...
据我所知,我可以为每一行创建两个'TextOut'调用,一个用于缩写,一个用于“:%d”,有没有办法可以用SetTextAlignment()修改hdc?
以下是我的代码的摘录:
...
TextOut(hdc, 10, 100, "STATS:", strlen("STATS:"));
TextOut(hdc, 17, 100+textYStep, "STR:0", 5);
TextOut(hdc, 17, 100+textYStep*2, "CON:0", 5);
TextOut(hdc, 17, 100+textYStep*3, "DEX:0", 5);
TextOut(hdc, 17, 100+textYStep*4, "INT:0", 5);
TextOut(hdc, 17, 100+textYStep*5, "WIS:0", 5);
TextOut(hdc, 17, 100+textYStep*6, "WIL:0", 5);
TextOut(hdc, 17, 100+textYStep*7, "CHR:0", 5);
...
答案 0 :(得分:3)
您可以使用固定宽度字体,这也是本网站用于格式化代码的内容:
HFONT hfont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
或
int textYStep = 16;
HFONT hfont = CreateFont(textYStep, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_QUALITY, 0, "Courier New");
HFONT oldfont = (HFONT)SelectObject(hdc, hfont);
TextOut(hdc, 10, 100, "STATS:", strlen("STATS:"));
TextOut(hdc, 17, 100 + textYStep * 1, "STR:0", 5);
TextOut(hdc, 17, 100 + textYStep * 2, "CON:0", 5);
SelectObject(hdc, oldfont);
DeleteObject(hfont);
或者按照评论中的建议使用TabbedTextOut
:
int tabs[] = { 50, 100, 150, 200 };
const char *text = "X1\tX2\tX3\tX4";
TabbedTextOut(hdc, 17, 100 + textYStep, text, strlen(text), 4, tabs, 17);