游戏——TextOut函数

用当前选择的字符、背景颜色和正文颜色将一个字符串写道指定位置

TextOut()函数

原型:

BOOL TextOut(
   HDC hdc,    //需要进行的文本输出的DC的句柄
   int nXStart,  //开始书写的位置的X坐标
   int nYStart,  //开始书写的位置的Y坐标
   LPCTSTR lpString,  //指向字符串的指针,文本默认黑色,背景为白色
   int cbString  //字符串的字符数
   );

调用实例:

wchar_t text1[]=L"要有最朴素的生活,与最遥远的梦想,即使明日天寒地冻,路远马亡";
TextOut(g_hdc, 30, 150, text1, wcslen(text1));

DrawText()函数
原型:

int DrawText(
    HDC hDC,   //需要进行文本输出的DC设备环境句柄
    LPCTSTR lpString,   //指向需要写入的字符串的指针
    int nCount,   //需要写入的字符串的长度,如果因为C1,DrawText会自动计算字符数
    LPRECT lpRect,    //指向包含了绘制区域的矩形结构体的指针
    UINT uFormat      //书写模式的标识,有多种定制可以选择
    );
    
uFormat类型:
DT_LEFT文本左对齐
DT_RIGHT文本右对齐
DT_TOP文本顶部对齐
DT_SINGLELINE在单行里显示所有文字,按回车键文字也不换行
DT_BOTTON底部对齐,需要配合T_SINGLELINE一起用

设置文字的颜色

SetText()函数
原型:

COLORREF SetTextColor(
    HDC hdc,    //设置环境句柄
    COLORREF crColor   //需要设置的文本颜色
    );

调用实例:

SetTextColor(g_hdc,RGB(50,250,50));  //设置为青绿色

设置文字背景透明

SetBkMode()函数
原型:

int SetBkMode(
   HDC hdc,  //设备环境的句柄
   int iBkMode  //mode是要设置的模式,我们常设为TRANSPARENT
   );

OPAQUE 用当前的背景的画刷的颜色输出显示文字的背景
TRANSPARENT 使用透明的输出,也就文字的背景是不改变的

实例:

SetBkMode(g_hdc,TRANSPARENT);  //设置输出文字背景色为透明

字体的创建

CreateFont()函数
原型:

HFONT CreateFont(
    int nHight,  //字体的逻辑高度
    int nWidth,  //字体的逻辑宽度
    int nEscapement,   //字体的显示角度
    int nOrientation,   //字体的角度 
    int fnWeight,   //字体的磅数
    DWORD fdwItalic,   //是否为斜体
    DWORD fdwUnderline,   //是否带下划线
    DWORD fdwStrikeOut,   //是否带删除线
    DWORD fdwCharSet,   //所需的字符集
    DWORD fdwOutputPrecision,   //输出精度
    DWORD fdwClipPrecision,   //裁剪的精度
    DWORD fdwQuality,   //输出的质量
    DWORD fdwPitchAndFamily,   //字体间距的字符集
    LPCTSTR lpszFace,   //字体名称
    );

调用实例:

HFONT hFont=CreateFont(45,0,0,0,0,0,0,0,GB2312_CHARSET,0,0,0,0,TEXT("微软雅黑"));

实例程序GDIdemo2

VOID Game_Paint(HWND hwnd)
{
HFONT hFont=CreateFont(45,0,0,0,0,0,0,0,GB2312_CHARSET,0,0,0,0,TEXT("微软雅黑"));   //创建一种字体
 SelectObject(g_hdc,hFont);  //将字体选入设备环境中
 SetBkMode(g_hdc,TRANSPARENT);  //设置输出文字背景色为透明

//定义三段文字
wchar_t text1[]=L"我们所有的梦想都可以成真,只要我们有勇气取追求它们。";
wchar_t text2[]=L"All our dreams can come true, if we have the courage to pursue them.";
wchar_t text3[]=L"-----------沃尔特 迪斯尼";

//设置文字颜色并输出第一段文字
SetTextColor(g_hdc,RGB(50,250,50));
TextOut(g_hdc,30,150,text1,wcslen(text1));
//设置文字颜色并输出第二段文字
SetTextColor(g_hdc,RGB(50,50,255));
TextOut(g_hdc,30,200,text2,wcslen(text2));
//设置文字颜色并输出第三段文字
SetTextColor(g_hdc,RGB(255,150,50));
TextOut(g_hdc,500,250,text3,wcslen(text3));

DeleteObject(hFont);   //释放字体对象,以免占用内存
}

勉励自己,再接再厉!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值