资源简介
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++ 3D 五子棋 opengl
- 使用OpenGL编写的三维曲线和曲面,V
- c++primer_第五版_中文版(完整).rar
- openGL四面体、立方体、正N棱柱、齿轮
- 《C++ Primer Plus第6版中文版》源代码和
- 用OpenGL开发的机械臂运动仿真程序
- OPENGL 星空 背景 图像
- mfc+opengl离散点绘制曲面
- 使用opengl的图形学大作业
- librdkafka c++ API 中文版
- 机器人手臂
- OPENGL阴影
- [网盘]C++Primer Plus第6版中文版.pdf
- 场景渲染 蓝天 白云模拟程序二
- 中文C语言程序设计 教程
- RUDP协议RFC908和RFC1151中文版
- OpenGL窗口背景绘制
- c++标准库函数中文chm
- C语言实现的文字加密与解密小程序(
- C++ Primer 第五版 中文版 带书签 百度云
- MFC的对话框中使用OpenGL绘图
- openGL 小汽车
- Exceptional C++(中文版).侯捷-侯老师的
- 基于MFC的华容道小程序.zip
- 画线算法C++的实现-鼠标交互
- 基于MFC OpenGL读取obj文件并以双视图显
- C++API中文版CHM
- opengl绘制花瓶源码基于glut库
- 七控制点B样条曲线
- 通过MFC和OpenGL实现点云数据的提取和
评论
共有 条评论