关于精确计算字符串宽度的挑战性有关问题
关于精确计算字符串宽度的挑战性问题
各位,问题是这样的,我在屏幕上输出了一串字符串(UNICODE),当为中文或者英文时,没有问题。
我输出了一串韩文,韩文中包含着空格,结果我在定位光标时出现了问题。因为在调试中我发现这些空格的宽度只有3像素(而在中英文中均有8像素)。
关于获取字符串宽度,我使用了GetTextExtentPoint32(我也尝试过使用DrawText并设置标识参数为DT_CALCRECT),取到的字符串宽度并不正确。
请问各位,有无好的方法?
------解决方案--------------------
跟字体有关。最好使用打印字体。
------解决方案--------------------
计算宽度时选入DC的字体与绘制时使用的字体相同吗?建议描述再详细一些。
------解决方案--------------------
用等宽字符
LOGFONT m_lf;
ZeroMemory(&m_lf, sizeof(m_lf));
m_lf.lfHeight = -13;
m_lf.lfWeight = 400;
m_lf.lfCharSet = 134;
m_lf.lfOutPrecision = 1;
m_lf.lfClipPrecision = 2;
m_lf.lfQuality = 1;
m_lf.lfPitchAndFamily = 49;
lstrcpy(m_lf.lfFaceName, "Fixedsys");
m_hFont = CreateFontIndirect(&m_lf);
------解决方案--------------------
你真有面子,看楼上三位的排名
------解决方案--------------------
..学习/..up
各位,问题是这样的,我在屏幕上输出了一串字符串(UNICODE),当为中文或者英文时,没有问题。
我输出了一串韩文,韩文中包含着空格,结果我在定位光标时出现了问题。因为在调试中我发现这些空格的宽度只有3像素(而在中英文中均有8像素)。
关于获取字符串宽度,我使用了GetTextExtentPoint32(我也尝试过使用DrawText并设置标识参数为DT_CALCRECT),取到的字符串宽度并不正确。
请问各位,有无好的方法?
------解决方案--------------------
跟字体有关。最好使用打印字体。
------解决方案--------------------
计算宽度时选入DC的字体与绘制时使用的字体相同吗?建议描述再详细一些。
------解决方案--------------------
用等宽字符
LOGFONT m_lf;
ZeroMemory(&m_lf, sizeof(m_lf));
m_lf.lfHeight = -13;
m_lf.lfWeight = 400;
m_lf.lfCharSet = 134;
m_lf.lfOutPrecision = 1;
m_lf.lfClipPrecision = 2;
m_lf.lfQuality = 1;
m_lf.lfPitchAndFamily = 49;
lstrcpy(m_lf.lfFaceName, "Fixedsys");
m_hFont = CreateFontIndirect(&m_lf);
------解决方案--------------------
你真有面子,看楼上三位的排名
------解决方案--------------------
..学习/..up