在openframeworks上显示中文
来源:互联网 发布:mysql怎么创建索引 编辑:程序博客网 时间:2024/06/08 07:41
在openframeworks上显示中文我目前知道两种方法,其中一种便是接下来记录的一种。说是记录,是因为这个方法是我从网上找的,并不是我的原创。非常感谢作者。这个方法是基于windows系统的API的方法。代码如下:
void drawCNString(const char* str) {int len, i;wchar_t* wstring;HDC hDC = wglGetCurrentDC();GLuint list = glGenLists(1);// 计算字符的个数// 如果是双字节字符的(比如中文字符),两个字节才算一个字符// 否则一个字节算一个字符len = 0;for (i = 0; str[i] != '\0'; ++i){if (IsDBCSLeadByte(str[i]))++i;++len;}// 将混合字符转化为宽字符wstring = (wchar_t*)malloc((len + 1) * sizeof(wchar_t));MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, wstring, len);wstring[len] = L'\0';// 逐个输出字符for (i = 0; i<len; i++) {wglUseFontBitmapsW(hDC, wstring[i], 1, list);glCallList(list);}// 回收所有临时资源free(wstring);glDeleteLists(list, 1);}#define MAX_CHAR 128void drawString(const char* str) {static int isFirstCall = 1;static GLuint lists;if (isFirstCall) { // 如果是第一次调用,执行初始化 // 为每一个ASCII字符产生一个显示列表isFirstCall = 0;// 申请MAX_CHAR个连续的显示列表编号lists = glGenLists(MAX_CHAR);// 把每个字符的绘制命令都装到对应的显示列表中wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);}// 调用每个字符对应的显示列表,绘制每个字符for (; *str != '\0'; ++str)glCallList(lists + *str);}void selectFont(int size, int charset, const char* face) {HFONT hFont = CreateFontA(size, 0, 0, 0, FW_MEDIUM, 0, 0, 0,charset, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, face);HFONT hOldFont = (HFONT)SelectObject(wglGetCurrentDC(), hFont);DeleteObject(hOldFont);}void display(void) {selectFont(48, ANSI_CHARSET, "Comic Sans MS");glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f, 0.0f, 0.0f);glRasterPos2f(100.0f, 100.0f);drawString("Hello, World!");selectFont(48, GB2312_CHARSET, "楷体_GB2312");glColor3f(1.0f, 1.0f, 0.0f);glRasterPos2f(200.0f, 200.0f);drawCNString("当代的中国汉字");selectFont(48, DEFAULT_CHARSET, "华文仿宋");glColor3f(0.0f, 1.0f, 0.0f);glRasterPos2f(300.0f, 300.0f);drawCNString("傳統的中國漢字");}
当然要在ofApp.h中对相应的方法做声明。
0 0
- 在openframeworks上显示中文
- 在ubuntu上安装以及新建openframeworks工程
- jfreechart在aix上中文显示乱码
- jfreechart在Linux上不能显示中文
- jfreechart在Linux上不能显示中文
- 在UIWebView上显示中文文本文件
- 【openFrameworks】
- UIQ3.0系列--在模拟器上显示中文
- opencv-在图像上显示字符(不包括中文)
- qt/e在arm板上显示中文的方法
- XNA4.0 在游戏窗口上显示中文
- 使用cocos2dx 在android设备上显示中文
- 在s3c2416板上实现framebuffer显示中文
- Qt4.7 在开发板上的中文显示问题
- FreeType 结合opencv –> 在图像上显示中文
- opencv-在图像上显示字符(不包括中文)
- Cocos 在win32 平台上显示中文(仅实现win32)
- android studio在模拟器上显示中文乱码的解决方案
- Unity 双击切换目标点
- struct net_device网络设备结构体详解
- ajax
- HDU 5965 扫雷 CCPC合肥
- Codeforces 521A DNA Alignment【贪心+思维】
- 在openframeworks上显示中文
- Deep Learning algorithms with TensorFlow
- 【latex】图片插入和引用
- leetcode-83 Remove Duplicates from Sorted List
- 深入理解Java:注解(Annotation)注解处理器
- 【Android - MD】之TabLayout的使用
- [Json框架选型]Android开发中应该使用哪一种主流json框架?
- 微信小程序开发技术细节
- 数据结构与算法:双向链表