游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2415|回复: 4

请问如何改变自己做的游戏中的字体大小?

[复制链接]

34

主题

107

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2005-2-14 18:46:00 | 显示全部楼层 |阅读模式
有如下代码:
        char buf[32];
        memset(buf,0,32);
        lpDDSBack->GetDC(&hdc);
        ::SetBkMode(hdc,TRANSPARENT);
        ::SetTextColor(hdc,RGB(255,0,0));
        TextOut(hdc,10,10,buf,wsprintf(buf,"FPS:%d",fps));
        lpDDSBack->ReleaseDC(hdc);
但是这样只能显示,请问如何改变字体的大小啊?

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-2-14 19:14:00 | 显示全部楼层

Re:请问如何改变自己做的游戏中的字体大小?

你使用的是点阵字库吗?如果是那就只能多添加几个字库了,比如12点阵、16点阵,24点阵等,或者利用算法进行缩放,不过效果不好!如果不是那就用如下方法吧(适用于2D-DDraw程序):

// CreateFont()中第一个参数就是指定字体大小的。

HFONT font12=CreateFont(12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, "宋体");

HFONT font24=CreateFont(24, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, "宋体");

void GTextOut( LPDIRECTDRAWSURFACE7 text_surf, CString Content, int x, int y, HFONT font, COLORREF color )
{
        HDC hDC;
        if(text_surf->GetDC(&hDC)==DD_OK)
        {
                SetBkMode( hDC, TRANSPARENT );
                              SelectObject( hDC, font );
                                SetTextColor( hDC, color );
                            TextOut( hDC, x, y, Content, lstrlen(Content));
                            text_surf->ReleaseDC( hDC );
        }
}

//输出文本
GTextOut(textsurf, "你好!", 20, 30, font12, RGB(255,255,255));
GTextOut(textsurf, "你好!", 20, 50, font24, RGB(255,255,255));

34

主题

107

帖子

106

积分

注册会员

Rank: 2

积分
106
 楼主| 发表于 2005-2-14 21:34:00 | 显示全部楼层

Re:请问如何改变自己做的游戏中的字体大小?

万分感谢!!

34

主题

107

帖子

106

积分

注册会员

Rank: 2

积分
106
 楼主| 发表于 2005-2-14 21:38:00 | 显示全部楼层

Re:请问如何改变自己做的游戏中的字体大小?

能否再说说每个参数的作用?

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-2-14 22:04:00 | 显示全部楼层

Re:请问如何改变自己做的游戏中的字体大小?

CreateFont()函数各参数说明太多了,请参看VC类库手册。我挑几个主要的说说吧!
函数原型:CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecisio, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename);
其中:
nWeight:字体深浅度(0至1000之间的墨色像素),有常用的常量(略)
bItalic:斜体
bUnderLine:下划线
cStrileOut:删除线
lpszFacename:指定字体字样名

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 08:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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