我如何在图片上使用for循环和sleep来实现逐字输出汉字,并在一行结尾自动换行,为什么我用outtextxy循环输出char a[]={"cbhadu,你好,bchdsni"},只显示英文,不显示中文?可不可以解答一下?给出循环输出汉字并换行的代码?
在图片上逐字输出汉字
每个汉字两个字节,你用 char 循环,会将汉字的两个字节分别输出,导致没有显示。
解决办法:
使用 Unicode。就是说,用 wchar_t 替代 char,并且所有字符串函数都使用对应的 Unicode 版本。下面是简单示例:
// 代码功能:逐字输出含中文的字符串(支持换行符)
// 编译环境:Visual C++ 2010,EasyX_20200315(beta)
//
#include <graphics.h>
#include <conio.h>
int main()
{
// 创建图形窗口
initgraph(640, 480);
wchar_t s[] = L"EasyX 的图形世界。\nThe quick brown fox jumps over a lazy dog.";
rectangle(19, 9, 121, 400); // 绘制边界
int x = 20, y = 10;
int w;
for (unsigned int i = 0; i < wcslen(s); i++)
{
w = textwidth(s[i]); // 获取字符宽度
if (x + w > 120 || s[i] == L'\n') // 超过最大宽度,或遇到回车,执行换行
{
x = 20;
y += textheight(s[i]);
}
if (s[i] != L'\n')
{
outtextxy(x, y, s[i]); // 输出字符
x += w;
}
}
_getch(); // 按任意键继续
closegraph(); // 关闭绘图窗口
}