学习目的 掌握获取字体句柄的两种方法;调用CreateFont函数创建自定义字体; 调用SetTextColor和SetBkColor函数设置字体的颜色和背景色; 掌握文本输出的过程(获取字体信息, 格式化文本, 输出文本). ? 1. 掌握获取字体句柄的方法: HFONT hF; //定义字体句柄变量hF hF=GetStockObject(); //获得系统字体句柄 SelectObject(hdc,hF); //将字体选入设备环境 ? 2. CreateFont函数创建自定义字体 HFont = CreateFont( int int int int int DWORD DWORD DWORD DWORD DWORD DWORD DWORD DWORD LPCTSTR ); 3.设置字体的颜色和背景色 SetTextColor(hdc,crColor); //设置字体颜色 SetBkColor(hdc,crColor); //设置背景色色 4. (1)获取字体信息 GetTextMetrics(hdc,&tm); (2) 格式化文本 用GetTextExtentPoint32()确定后续文本的坐标,然后根据当前字体信息确定换行后的坐标。 (3) 输出文本 使用TextOut或者DrawText输出文本:
5.编写程序: 在窗口上设计一行文字, 要求文字能在窗口中向左滚动显示, 而且每显示一轮, 改变一次颜色和字体. 程序主要代码如下: static int Flag=0; int X=0; LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { ????int wmId, wmEvent; ????PAINTSTRUCT ps; ????HDC hDC; ????RECT clientRect; ????//TCHAR szHello[MAX_LOADSTRING]; ????//LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); ????HFONT hF;???????????? ????TEXTMETRIC tm;???? ????char text[]="Windows 程序设计实验三";????????//输出的字符串. ????char chFont[7];????????????????????????????????//定义包含字体的字符串. ????int xOrg,yOrg,Y=0,nCharlen=strlen(text); ????switch (message) ????{ ????????case WM_CREATE: ????????SetTimer(hWnd,1,50,NULL);????????//设定定时器.每0.2秒发出WM_TIMER消息. ????????break; ????????case WM_COMMAND: ????????????wmId = LOWORD(wParam); ????????????wmEvent = HIWORD(wParam); ????????????// Parse the menu selections: ????????????switch (wmId) ????????????{ ????????????????case IDM_ABOUT: ???????????????? DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); ???????????????? break; ????????????????case IDM_EXIT: ???????????????? DestroyWindow(hWnd); ???????????????? break; ????????????????default: ???????????????? return DefWindowProc(hWnd, message, wParam, lParam); ????????????} ????????????break; ????????case WM_PAINT: ????????????hDC = BeginPaint(hWnd, &ps); ????????????GetClientRect(hWnd,&clientRect); ????????????xOrg=(clientRect.left+clientRect.right)/2; ????????????yOrg=(clientRect.top+clientRect.bottom)/2; ? ????????????SetViewportOrgEx(hDC,0,yOrg,NULL); ????????????// TODO: Add any drawing code here... ? ????????????if(Flag%4==0)????//设置字体颜色. ????????????{ ????????????????SetTextColor(hDC,RGB(255,0,0)); ????????????????strcpy(chFont,"楷体"); ????????????} ????????????else if(Flag%4==1) ????????????{ ????????????????SetTextColor(hDC,RGB(0,255,0)); ????????????????strcpy(chFont,"宋体"); ????????????} ????????????else if(Flag%4==2) ????????????{ ????????????????SetTextColor(hDC,RGB(0,0,255)); ????????????????strcpy(chFont,"仿宋体"); ????????????} ????????????else if(Flag%4==3) ????????????{ ????????????????SetTextColor(hDC,RGB(255,255,0)); ????????????????strcpy(chFont,"黑体"); ????????????} ????????????hF=CreateFont(????????????//获得字体句柄. ????????????????100,????????????????//字体高度 ????????????????0,????????????????????//系统自动调整宽度. ????????????????0,????????????????????//文本水平 ????????????????0,????????????????????//字体倾斜度为0 ????????????????400,????????????????//字体粗度.400为正常. ????????????????0,????????????????????//字体不倾斜. ????????????????0,????????????????????//无下划线. ????????????????0,????????????????????//无中划线. ????????????????GB2312_CHARSET,????????//字符集 ????????????????OUT_DEFAULT_PRECIS,????//默认输出精度. ????????????????CLIP_DEFAULT_PRECIS,//默认裁剪精度 ????????????????DEFAULT_QUALITY,????//默认输出质量. ????????????????DEFAULT_PITCH|FF_DONTCARE,//默认间距 ????????????????chFont);???????? //字体名称. ? ????????????SelectObject(hDC,hF);????//选入字体. ????????????GetTextMetrics(hDC,&tm);????//得到字体的信息. ????????????TextOut(hDC,X,Y-tm.tmHeight/2,&text[0],nCharlen); //输出. ? ????????????X-=10; ????????????if(X+tm.tmAveCharWidth*nCharlen<0){ ????????????????Flag++; ????????????????if(Flag==4) ????????????????????Flag=0; ????????????????X=clientRect.right; ????????????} ? ????????????DeleteObject(hF);????//删除字体. ????????????EndPaint(hWnd, &ps); ????????????break; ????????case WM_TIMER: ????????InvalidateRect(hWnd,NULL,1);????//刷新用户区. ????????break; ????????case WM_DESTROY: ????????????PostQuitMessage(0); ????????????break; ????????default: ????????????return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } 编译并调试程序, |
? 滚动文字运行结果如下图: ? 本次学习的涉及文本输出,需要注意Windows字符类型! |
文本输出方法与字体的设置
时间: 2024-10-01 04:07:29
文本输出方法与字体的设置的相关文章
第17章 文本和字体_17.1-17.2 简单文本输出、 字体的背景知识
17.1 简单文本输出 17.1.1 文本输出函数 (1)TextOut(hdc,xStart,yStart,pString,iCount) ①xStart和yStart使用的是逻辑坐标,TextOut并不以NULL来做字符串的结束,需指定字符的个数iCount的值 ②SetTextAlign会改变xStart和yStart的含义 SetTextAlign 坐标值的含义 TA_LEFT xStart:第一个字符的左侧坐标 TA_RIGHT xStart:最后一个字符的右侧坐标 TA_CENTER
VS2010/MFC字体和文本输出:文本输出
字体和文本输出:文本输出 本节主要讲解文本输出的方法和实例. 文本输出过程 在文本输出到设备以前,我们需要确定字体.字体颜色和输出的文本内容等信息.Windows窗口的客户区由应用程序管理,所以我们还要在应用程序中控制输出文本的格式,例如后续字符的位置.换行等格式. 由此,文本的输出过程大致包括确定字体信息.格式化文本和执行输出操作三个步骤.下面分别讲解. 1.确定字体信息 文本在输出以前应该先确定字体信息,或者是当前正在使用的字体,或者是自定义的字体,之后就可以根据确定的字体来显示文本或者利用
MFC字体与文本输出
字体 成员函数 1.CFont( ); 构造一个CFont对象.此对象在使用之前应该先使用CreateFont.CreateFontIndirect.CreatePointFont或CreatePointFontIndirect初始化. 2. BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cS
超链接字体颜色设置(通过html/css的设置方法)
超链接字体颜色设置是通过css来设置,a链接的颜色设置常用的有以下两种,1.超链接a的初始状态颜色,2.超链接字体的鼠标滑过颜色,还有两种病不常用:3.超链接字体的已访问颜色,4.超链接字体在按下鼠标时的颜色 四中超链接状态分别对应的css属性:a{}.a:hover{} .a:visited{}.a:active{},通常只写a{}.a:hover{}即可,如果你需要其他两种字体颜色设置请参照一下顺序来书写 a{color:red;} a:visited{color:green;} a:hov
spinner 设置文本框中的字体颜色
onItemSelected(AdapterView parent, View v, int position, long id) { TextView v1 = (TextView)v; v1.setTextColor(Color.WHITE); //可以随意设置自己要的颜色值 } 本文转自:http://bbs.csdn.net/topics/350049938 spinner 设置文本框中的字体颜色
Direct3D 10学习笔记(三)——文本输出
本篇将简单整理Direct3D 10的文本输出的实现,具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅翻译的电子书<DirectX 10 3D游戏编程入门>). 1.填充D3DX10_FONT_DESC结构体 D3DX库提供了用于显示文本的ID3DX10Font接口.而要获取一个指向ID3DX10Font对象的指针,需要先填充一个D3DX10_FONT_DESC结构体,该结构体用于描述所创建的字体
JavaScript中String对象处理HTML标记中文本的方法
big():创建一个<big></big>标记,将这个字符串的字体变大blink():创建一个<blink></blink>标记,使字符串具有闪烁效果bold():创建一个<bold></bold>标记,使字符串加粗显示fixed():创建一个<tt></tt>标记,使字符串固定倾斜显示italics():创建一个<i></i>标记,使字符串以斜体显示small():创建一个<sm
css 字体样式设置
css字体样式(Font Style),属性 时间:2014-05-08 21:49 来源:我爱学习网 | 作者:我爱学习网 | 本文已影响 68353 人 css字体样式(Font Style)是网页中不可或缺的样式属性之一,有了字体样式,我们的网页才能变得更加美观,因此字体样式属性也就成为了每一位设计者必需了解的知识.以下是我精心整理的css字体样式属性知识,供大家学习参考: css文本样式 序号 中文说明 标记语法 1 字体样式 {font:font-style font-variant
CSS为英文和中文字体分别设置不同的字体
font-family的调用方法: div { font-family:Arial,'Times New Roman','Microsoft YaHei',SimHei; font:bold 12px/0.75em Arial,'Times New Roman','Microsoft YaHei',SimHei; } 根据font-family的原则,假如客户终端不认识前面的字体,就自动切换到第二种字体,第二种不认识就切换到第三种,以此类推.假如都不能识别就调用默认字体 根据font-famil