游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1494|回复: 1

为什么我设置的字体显示一段时间就会失效?

[复制链接]

42

主题

115

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2010-7-27 11:08:00 | 显示全部楼层 |阅读模式
如果把hfont建成全局变量又能一直显示,但是如果反复调用这个函数,无论字体参数是如何,都会以第一次绘制字体时的属性绘制。
这个函数我是在绘制完图形之后调用的。

void C_Sprite2D::ShowText(char *text,int x, int y,char *fontstyle,int fontsize,int fontColor,BOOL fdwItalic,BOOL fdwUnderline,BOOL fdwStrikeOut)
{
        HDC hdc;
        m_pcBackVid->GetDC(&hdc);
        SetBkMode(hdc,TRANSPARENT);
        SetTextColor(hdc,fontColor);
        HFONT hfont = CreateFont(fontsize,0,0,0,FW_NORMAL,
              fdwItalic,fdwUnderline,fdwStrikeOut,DEFAULT_CHARSET,
              OUT_RASTER_PRECIS,CLIP_DEFAULT_PRECIS,
              VARIABLE_PITCH|PROOF_QUALITY,FF_DONTCARE,fontstyle);
        SelectObject(hdc,hfont);
        TextOut(hdc,x,y,text,strlen(text));
        m_pcBackVid->ReleaseDC(hdc);
}

2

主题

41

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2010-8-2 13:26:00 | 显示全部楼层

Re:为什么我设置的字体显示一段时间就会失效?

HFONT hfont = CreateFont(fontsize,0,0,0,FW_NORMAL,
              fdwItalic,fdwUnderline,fdwStrikeOut,DEFAULT_CHARSET,
              OUT_RASTER_PRECIS,CLIP_DEFAULT_PRECIS,
              VARIABLE_PITCH|PROOF_QUALITY,FF_DONTCARE,fontstyle);
把这个放到别处,不要每次都创建字体。你可以事先创建好若干个需要的字体,把句柄存好,以后绘制的时候直接拿句柄用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-11-22 16:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表