资源简介
OpenGl文字显示c++类,包括*.h和*.cpp,可显示中英文,已优化,速度很快。

代码片段和文件信息
#include “stdafx.h“
#include “glText.h“
#include
#include
#include
#include
CGlFont::CGlFont()
{
m_hFont=NULL;
InitFont(“宋体“);
m_X = 0;
m_Y = 0;
m_dHeight = 0;
m_fExtrusion = 0.1f;
m_rotateTheta = 0.0;
m_iDisplayList = 0;
m_red =255;
m_blue = 255;
m_green = 255;
}
CGlFont::~CGlFont()
{
}
LOGFONT CGlFont::GetLogFont()
{
LOGFONT lf;
Getobject(m_hFontsizeof(LOGFONT)&lf);
return lf;
}
void CGlFont::DeleteFont()
{
if(m_hFont)
{
Deleteobject(m_hFont);
m_hFont=NULL;
}
}
bool CGlFont::InitFont(LOGFONT &lf)
{
DeleteFont();
m_hFont=CreateFontIndirect(&lf);
if( m_hFont )return true;
else return false;;
}
bool CGlFont::InitFont(char *fontName)
{
DeleteFont();
m_hFont = CreateFont(
-16 //< lfHeight 字体高度
0 //< lfWidth 字体宽度
0 //< lfEscapement 字体的旋转角度 Angle Of Escapement
0 //< lfOrientation 字体底线的旋转角度Orientation Angle
FW_BOLD //< lfWeight 字体的重量
FALSE //< lfItalic 是否使用斜体
FALSE //< lfUnderline 是否使用下划线
FALSE //< lfStrikeOut 是否使用删除线
GB2312_CHARSET //< lfCharSet 设置字符集
OUT_TT_PRECIS //< lfOutPrecision 输出精度
CLIP_DEFAULT_PRECIS //< lfClipPrecision 裁剪精度
ANTIALIASED_QUALITY //< lfQuality 输出质量
FF_DONTCARE|DEFAULT_PITCH //< lfPitchAndFamily Family And Pitch
fontName); //< lfFaceName 字体名称
if(m_hFont)return true;
else return false;
}
void CGlFont::Draw2DText(char *string)
{
if(strlen(string)<=0)return;
//HDC hDC=wglGetCurrentDC();
HDC hDC = ::CreateCompatibleDC(NULL);
HFONT hOldFont=NULL;
hOldFont=(HFONT)Selectobject(hDCm_hFont);
if(!hOldFont)
{
return;
}
glRasterPos2f(m_X m_Y);
DWORD dwChar;
int ListNum;
for(size_t i=0;i {
if(IsDBCSLeadByte(string[i]))
{
dwChar=((unsigned char)string[i])*0x100+(unsigned char)string[i+1];
i++;
}
else
{
dwChar=string[i];
}
ListNum=glGenLists(1);
wglUseFontBitmaps(hDCdwChar1ListNum);
glCallList(ListNum);
glDeleteLists(ListNum1);
}
Selectobject(hDChOldFont);
::DeleteDC(hDC);
}
map CGlFont::m_sglFontList;
void CGlFont::Draw3DText(const char *string)
{
if(strlen(string)<=0)
return;
GLYPHMETRICSFLOAT pgmf[1];
HDC hDC=wglGetCurrentDC();
//设置当前字体
HFONT hOldFont=NULL;
hOldFont=(HFONT)Selectobject(hDCm_hFont);
if(!hOldFont)
{
return;
}
DWORD dwChar;
int ListNum;
int iNum=strlen((char *)string);
m_iDisplayList=glGenLists(1);
glPushMatrix();
for(size_t i=0;i {
if(IsDBCSLeadByte(string[i]))//是否为中文
{
dwChar=((unsigned char)string[i])*0x100+(unsigned char)string[i+1];
i++;
}
else
{
dwChar=string[i];
}
//不同的文字在文字描述表中只出现一次,如“我是中国中国”,重复的中和国只出现一次,这样大大提高了速度
if (m_sglFontList.find(dwChar) == m_sglFontList.e
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1258 2010-08-24 10:01 glText.h
文件 4148 2010-08-24 10:01 glText.cpp
----------- --------- ---------- ----- ----
5406 2
相关资源
- C++纯文字DOS超小RPG游戏
- 使用LCD9648显示文字
- Quectel_EC200xEG912YEC600NEC600S系列_TCP(I
- 安卓c语言开发SDL2+opengles
- STM8S中文手册
- TM4C123中文手册
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- Effective Modern C++ 中文
- Effective C++(中文版).azw3
- vtigercrm7.2中文语言包
- opengl绘制汽车.cpp
- C开发mysql的api中文手册
- Effective C++ More effective C++ 中文版 .ch
- C++入门经典(第9版) ([美]Walter Sa
- Effective Morden C++ 高清文字版
- SQLyog中文破解版
- Effective C++(第三版中文版) - Scott
- 经典书籍《C++ Primer Plus 第6版 》 中文
- opengl实现水流效果sph
- UNIX/LINUX下C语言中文短信UCS2编码和解
- Effective C++中文版第三版 高清PDF
- C++ Primer中文第五版.zip
- VC++6.0技术内幕第五版中文版+英文版
- opengl源代码,全是精华!
- OpenGL迷宫山东大学图形学实验三
- VC++技术内幕第五版中文pdf
- 嵌入式工程师必知必会 (完整高清中
- Effective C++中文版(第三版)
- opengl的立方体消隐算法
评论
共有 条评论