c++ - 如何自动调整文本大小以适合矩形 winuser.h
问题描述
我在这里有这段代码来打印居中的文本:
const std::string a= "testddfvdfv dfvdf v";
const CHAR *c = a.c_str();
const RECT b[4] = {x1,y1,x2,y2};
DrawTextA(gui_out._hdc, c, a.size(), const_cast<LPRECT>(b), DT_SINGLELINE | DT_CENTER | DT_VCENTER);
它成功地将字符串 a 打印到矩形的中心(由 x1,x2,y1,y2 表示)。唯一的问题是文本很小并且不会根据矩形宽度和高度调整大小。有没有办法做到这一点,以便文本大小自动调整大小,使字符串适合矩形?谢谢
编辑:这是我设置字体的方式。是否有某种方法或算法来计算必要的字体大小以适应字符?
//Two methods for setting font and size
void SetTextSize(int NewFontSize)
{
gui_out.FontSize = NewFontSize;
}
//---------------------------------------------------
void SetTextFont(string NewFontName)
{
if (NewFontName == "Arial"
|| NewFontName == "System"
|| NewFontName == "Times New Roman"){
gui_out.FontName = NewFontName;
if (NewFontName == "Times New Roman")
gui_out.FontFamily = FF_ROMAN;
else
gui_out.FontFamily = FF_SWISS;
}
}
void DrawCenteredText(string S)
{
SetTextColor(gui_out._hdc, RGB(gui_out.RedTextVal, gui_out.GreenTextVal, gui_out.BlueTextVal));
HFONT hFont = CreateFont(gui_out.FontSize,0,0,0,FW_NORMAL,0,0,0,
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, gui_out.FontFamily | VARIABLE_PITCH, gui_out.FontName.c_str());
HFONT hOldFont = HFONT(SelectObject(gui_out._hdc, hFont));
// Below for Visual C++
POINT P;
GetCurrentPositionEx(gui_out._hdc, &P);
SetTextAlign(gui_out._hdc,TA_BASELINE | TA_CENTER | TA_UPDATECP);
TextOut(gui_out._hdc,P.x,P.x,S.c_str(),S.length());
// Above for Visual C++
/* This for Borland
DWORD P = GetCurrentPosition(gui_out._hdc);
SetTextAlign(gui_out._hdc,TA_BASELINE | TA_CENTER | TA_UPDATECP);
TextOut(gui_out._hdc,LOWORD(P),HIWORD(P),S.c_str(),S.length());
*/
SelectObject(gui_out._hdc, hOldFont);
DeleteObject(hFont);
}
解决方案
推荐阅读
- docker - Docker 错误:服务“应用程序”构建失败
- javascript - 如何将子文档中的字段更改为 Mongoose 中的父字段
- r - 为什么 Arima.sim 返回非平稳 AR 模型的错误信息?
- twitter-bootstrap - Bootstrap datetimepicker - 如何为今天按钮使用文本“今天”?
- svg - 将字形路径转换为 SVG
- autohotkey - AHK:查找文本并全部替换
- eclipse - 在eclipse中运行maven的问题
- c# - 如何在 VisualStudio 中将模块安装到 IronPython
- ruby - Ruby 比较时间对象考虑日期。如何避免这种情况?
- python - 有没有办法将生成的word文档保存在特定目录下