opengl汉字

更新时间:2023-07-17 10:39:43 阅读: 评论:0

                                  Opengl 汉字显示
最近开始学习opengl,菜鸟将自己理解的东西在此放置,欢迎各位点评.或推荐些好的资料,谢谢
目前本人所了解的opengl显示汉字的方式有几种了,什么位图显示等等,各有利弊,照本人理解校园爱情电影,较能接受的就是初始化显示列表,然后显示,以下给出原代码.
大多从其它文章copy强调句练习,但经过修改一些参数,利用Show2DText()也能显示出3D效果,是否有点蒙人的嫌疑,于是我将它们理解为两种构建显示列表的方式有所不同而已.
以下是完整代码:
//GLFont.h
#include <windows.h>
#include "gl/gl.h"
#include <string>
#pragma warning(disable:4244)
using namespace std;
//OpenGL汉字显示类
class GLfont
{
    HFONT hFont;
    COLORREF cl;
public:
    GLfont();
    virtual ~GLfont();
    void SetTextColor(COLORREF textcolor);//字体颜色设置
    void CreateFont(char *facename, int height, int weight, bool italic,bool underline,bool strikeout);和平鸽子简笔画
    void ShowText(int x, int y, LPCTSTR lpszText);//华为手机什么系统显示图象D汉字
    void Show2DText(char *str);//显示图形D汉字
    void Show3DText(unsigned char *str);//显示图形D汉字
};
GLfont::GLfont()
{
    cl=RGB(255,255,255);
}
GLfont::~GLfont()
{
    if(hFont) DeleteObject(hFont);
}
油面筋塞肉//只有关闭光照和纹理才能正确显示颜色
void GLfont::SetTextColor(COLORREF textcolor)//字体颜色设置
{
    cl=textcolor;
}
void GLfont::CreateFont(char *facename, int height, int weight, bool italic,bool underline,bool strikeout)
{
    LOGFONT lf;
    lf.lfHeight = height;
    lf.lfWidth = 0;
    lf.lfEscapement = 0;
    lf.lfOrientation = 0;
    lf.lfWeight = weight;
    lf.lfItalic = italic;
    lf.lfUnderline = underline;
    lf.lfStrikeOut = strikeout;
    lf.lfCharSet = DEFAULT_CHARSET;
    lf.lfOutPrecision = OUT_TT_PRECIS;
    lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
汤圆真实图片
    lf.lfQuality = PROOF_QUALITY;
    lf.lfPitchAndFamily = VARIABLE_PITCH | TMPF_TRUETYPE | FF_MODERN;
    strcpy(lf.lfFaceName,facename);
    // 创建字体
    hFont = CreateFontIndirect(&lf);
}
//2D图像汉字只与屏幕相联系,与具体的变换矩阵无关,也就是说不能缩放旋转。
骨关节炎治疗//x,yD图像汉字距屏幕左下角(注意不是左上角)的横向和纵向距离。
void GLfont::ShowText(int x, int y, LPCTSTR lpszText)
{
    // 保存原投影矩阵,将投影矩阵设为平行投影
    glMatrixMode( GL_PROJECTION );
    glPushMatrix();
    glLoadIdentity();
    glOrtho( 0, 640, 0, 480, -1, 1 );
    // 保存原模型变换矩阵,平移至( x, y )报春儿歌
    glMatrixMode( GL_MODELVIEW );
    glPushMatrix();
    glLoadIdentity();
    RECT rect;
    GetClientRect(GetActiveWindow(),&rect);
    glTranslatef((float)x,(float)y,0);
    HBITMAP hbitmap;
    BITMAP bm;
    SIZE size;
    UCHAR* pBmpBits;
    HFONT hOldFont;
    HDC hdc = wglGetCurrentDC();
    hOldFont = (HFONT)SelectObject(hdc, hFont);
    ::GetTextExtentPoint32(hdc, lpszText, strlen(lpszText), &size);
    hbitmap = , ,1, 1, NULL);
    HDC hMemDC = ::CreateCompatibleDC(hdc);
    if(hMemDC)
    {
        HBITMAP hPrevBmp = (HBITMAP)SelectObject(hMemDC,hbitmap);

本文发布于:2023-07-17 10:39:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1084956.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显示   矩阵   屏幕   颜色   理解   字体   纹理
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图