GDI文字绘制和windows下opengl文字绘制小结
2013-11-27 16:44
190 查看
1.GDI绘制文字,要设置文字的属性,主要就是通过设置DC中的font对象来实现的。
font对象的创建可以由createfont()、createfontIndirect()来实现。
这里主要讨论下nEscapement、nOrientation参数的含义
1.在graphics mode为GM_ADVANCED时,nEscapement代表文字行的绘制方向,nOrientation代表每个文字的基线方向。(方向都针对于x轴,1/10度为基本单位),绘制的结果如下图(左)所示:
2.在graphics mode为GM_COMPATIBLE时,nEscapement代表文字行的绘制方向,nOrientation无效。基线始终平行于文字行的绘图方向.如下图(右)所示:
可以通过setGraphicsMode(GM_)来设置graphics mode .
![](http://img.blog.csdn.net/20131127170617515)
![](http://img.blog.csdn.net/20131127164902890)
(nescapement=0,设置的是nOrientation的角度) (设置的是nescapement的角度,nOrientation无效)
2.windows下OPengl绘制字体
1,:使用位图装载字体,绘制字体就是绘制位图。
opengl中的位图是不能够旋转和缩放的,且其永远平行于xy平面(不是光栅位置不能旋转缩放,光栅位置是和vertex一样的,经过变换矩阵之后在其位置进行位图绘制。只是位图永远是以变换后的点为起始,然后在平行xy平面上绘制的。)。wglusefontBitmaps(W)可以将字符生成为bitmap对象,并放入显示列表中。
2:使用3维轮廓绘制字体。此种字体就是用点线进行连接生成的3维物体。因此可以和普通的三维物体一样进行旋转,缩放,平移操作。wglusefontOutlines(W)可以生成3d的文字轮廓,并放入显示列表中。但是在windows中,此函数生成的3d文字轮廓只是按照truetype字体生成的,没有其他的字体。
3:使用纹理。可以将bitmap转换为纹理,然后贴在quard上面。
4:使用freetype库实现字体绘制
font对象的创建可以由createfont()、createfontIndirect()来实现。
HFONT CreateFont( int nHeight, // height of font int nWidth, // average character width int nEscapement, // angle of escapement int nOrientation, // base-line orientation angle int fnWeight, // font weight DWORD fdwItalic, // italic attribute option DWORD fdwUnderline, // underline attribute option DWORD fdwStrikeOut, // strikeout attribute option DWORD fdwCharSet, // character set identifier DWORD fdwOutputPrecision, // output precision DWORD fdwClipPrecision, // clipping precision DWORD fdwQuality, // output quality DWORD fdwPitchAndFamily, // pitch and family LPCTSTR lpszFace // typeface name ); HFONT CreateFontIndirect( CONST LOGFONT* lplf // characteristics);//其主要是对createfont函数中的参数用LOGFONT结构体进行封装。
这里主要讨论下nEscapement、nOrientation参数的含义
1.在graphics mode为GM_ADVANCED时,nEscapement代表文字行的绘制方向,nOrientation代表每个文字的基线方向。(方向都针对于x轴,1/10度为基本单位),绘制的结果如下图(左)所示:
2.在graphics mode为GM_COMPATIBLE时,nEscapement代表文字行的绘制方向,nOrientation无效。基线始终平行于文字行的绘图方向.如下图(右)所示:
可以通过setGraphicsMode(GM_)来设置graphics mode .
(nescapement=0,设置的是nOrientation的角度) (设置的是nescapement的角度,nOrientation无效)
2.windows下OPengl绘制字体
1,:使用位图装载字体,绘制字体就是绘制位图。
opengl中的位图是不能够旋转和缩放的,且其永远平行于xy平面(不是光栅位置不能旋转缩放,光栅位置是和vertex一样的,经过变换矩阵之后在其位置进行位图绘制。只是位图永远是以变换后的点为起始,然后在平行xy平面上绘制的。)。wglusefontBitmaps(W)可以将字符生成为bitmap对象,并放入显示列表中。
2:使用3维轮廓绘制字体。此种字体就是用点线进行连接生成的3维物体。因此可以和普通的三维物体一样进行旋转,缩放,平移操作。wglusefontOutlines(W)可以生成3d的文字轮廓,并放入显示列表中。但是在windows中,此函数生成的3d文字轮廓只是按照truetype字体生成的,没有其他的字体。
3:使用纹理。可以将bitmap转换为纹理,然后贴在quard上面。
4:使用freetype库实现字体绘制
相关文章推荐
- 如何基于纯GDI实现alpha通道的矢量和文字绘制
- C#+OpenGL+FreeType显示3D文字(3) - 用PointSprite绘制文字
- OPENGL绘制文字
- Windows GDI学习笔记(二)——窗口的绘制
- 【Windows编程】系列第五篇:GDI图形绘制
- GDI绘制各种图形和文字
- OpenGL中的3D文字绘制
- windows基础编程----第四篇(调用GDI绘制出相关图形)
- OpenGL入门学习之十六——在Windows系统中显示文字
- 【Windows编程】系列第五篇:GDI图形绘制
- Windows窗口绘制、窗口类型小结
- Windows GDI学习笔记——窗口的绘制
- OPENGL绘制文字
- opengl绘制文字
- Windows程序编程(5):文字,位图的绘制
- 如何基于纯GDI实现alpha通道的矢量和文字绘制
- windows GDI+ 离屏绘制文字图片
- OpenGL笔记16 文字绘制
- Windows GDI:CDC绘制文本
- 关于windows程序相关基础技术的一点小结(3.windows GDI 篇)