LogFont设置字体

合集下载

如何设置static变量显示的颜色和字体大小

如何设置static变量显示的颜色和字体大小

如何设置static变量显示的颜色和字体大小???#if !defined(AFX_DLGLINKDEMO_H__9E74FFA5_8167_429E_8CC2_59CC0D97B764__INCLUDED_) #define AFX_DLGLINKDEMO_H__9E74FFA5_8167_429E_8CC2_59CC0D97B764__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000// DlgLinkDemo.h : header file///////////////////////////////////////////////////////////////////////////////// CDlgLinkDemo dialogclass CDlgLinkDemo : public CDialog{// Constructionpublic:CFont m_font;BOOL UrlVisited;BOOL MailVisited;HCURSOR hHand;CDlgLinkDemo(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DA TA(CDlgLinkDemo)enum { IDD = IDD_DLGLINK };CEdit m_Hello2;CStatic m_Hello1;//}}AFX_DA TA// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CDlgLinkDemo)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected:// Generated message map functions//{{AFX_MSG(CDlgLinkDemo)afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);afx_msg void OnUrl();afx_msg void OnEmail();virtual BOOL OnInitDialog();afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);afx_msg void OnChangeHello2();//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCA TION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_DLGLINKDEMO_H__9E74FFA5_8167_429E_8CC2_59CC0D97B764__INCLUDED_)// DlgLinkDemo.cpp : implementation file//#include "stdafx.h"#include "xExam.h"#include "DlgLinkDemo.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CDlgLinkDemo dialogCDlgLinkDemo::CDlgLinkDemo(CWnd* pParent /*=NULL*/): CDialog(CDlgLinkDemo::IDD, pParent){//{{AFX_DA TA_INIT(CDlgLinkDemo)// NOTE: the ClassWizard will add member initialization here//}}AFX_DA TA_INIT}void CDlgLinkDemo::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DA TA_MAP(CDlgLinkDemo)DDX_Control(pDX, IDC_HELLO2, m_Hello2);DDX_Control(pDX, IDC_HELLO1, m_Hello1);//}}AFX_DA TA_MAP}BEGIN_MESSAGE_MAP(CDlgLinkDemo, CDialog)//{{AFX_MSG_MAP(CDlgLinkDemo)ON_WM_CTLCOLOR()ON_BN_CLICKED(IDC_URL, OnUrl)ON_BN_CLICKED(IDC_EMAIL, OnEmail)ON_WM_SETCURSOR()ON_EN_CHANGE(IDC_HELLO2, OnChangeHello2)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CDlgLinkDemo message handlersHBRUSH CDlgLinkDemo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif ((pWnd->GetDlgCtrlID() == IDC_URL) || (pWnd->GetDlgCtrlID() == IDC_EMAIL)){LOGFONT lf;GetFont()->GetObject(sizeof(lf), &lf);lf.lfUnderline = TRUE;m_font.CreateFontIndirect(&lf);pDC->SelectObject(&m_font);if (((pWnd->GetDlgCtrlID() == IDC_URL) && (!UrlVisited)) || ((pWnd->GetDlgCtrlID() == IDC_EMAIL) && (!MailVisited)))pDC->SetTextColor (RGB(0,0,255)); // blueelsepDC->SetTextColor (RGB(128,0,128)); // purplem_font.DeleteObject();}// TODO: Return a different brush if the default is not desiredreturn hbr;void CDlgLinkDemo::OnUrl(){// TODO: Add your control notification handler code hereHINSTANCE h = ShellExecute( NULL, "open","", NULL, NULL, SW_SHOWNORMAL );if ((UINT)h > 32){UrlVisited = TRUE;Invalidate(); // repaint to show visited color}else{AfxMessageBox ("Unable to display web page.");}}void CDlgLinkDemo::OnEmail(){// TODO: Add your control notification handler code hereHINSTANCE h = ShellExecute( NULL, "open","mailto:yyjmtxa@", NULL, NULL, SW_SHOWNORMAL );if ((UINT)h > 32){MailVisited = TRUE;Invalidate(); // repaint to show visited color}else{AfxMessageBox ("Unable to open mail client.");}}BOOL CDlgLinkDemo::OnInitDialog(){CDialog::OnInitDialog();// TODO: Add extra initialization herehHand = ::LoadCursor(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_XHAND));UrlVisited = FALSE;MailVisited = FALSE;return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE}BOOL CDlgLinkDemo::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {// TODO: Add your message handler code here and/or call default// Sets cursor to handif ((pWnd->GetDlgCtrlID() == IDC_URL) || (pWnd->GetDlgCtrlID() == IDC_EMAIL)) {::SetCursor(hHand);return TRUE;}return CDialog::OnSetCursor(pWnd, nHitTest, message);}void CDlgLinkDemo::OnChangeHello2(){// TODO: If this is a RICHEDIT control, the control will not// send this notification unless you override the CDialog::OnInitDialog()// function and call CRichEditCtrl().SetEventMask()// with the ENM_CHANGE flag ORed into the mask.// TODO: Add your control notification handler code hereCString str;m_Hello2.GetWindowText( str );m_Hello1.SetWindowText( str );}。

VC++GDI+编程的字体和文本绘制

VC++GDI+编程的字体和文本绘制

VC++GDI+编程的字体和⽂本绘制字体是⽂字显⽰和打印的外观形式,它包括了⽂字的字样、风格和尺⼨等多⽅⾯的属性。

适当地选⽤不同的字体,可以⼤⼤地丰富⽂字的外在表现⼒。

例如,把⽂字中某些重要的字句⽤较粗的字体显⽰,能够体现出突出、强调的意图。

当然,⽂本输出时还可使⽤其格式化属性和显⽰质量来优化⽂本显⽰的效果。

字体属性和字体创建字体属性和字体创建字体的属性有很多,这⾥主要介绍字样、风格和尺⼨三个主要属性。

字样是字符书写和显⽰时表现出的特定模式,例如,对于汉字,通常有宋体、楷体、仿宋、⿊体、⾪书以及幼圆等多种字样。

GDI+是通过FontFamily类来定义字样的,例如下⾯的代码:FontFamily fontFamily(L"幼圆"); // 定义"幼圆"字样字体风格主要表现为字体的粗细和是否倾斜等特点。

GDI+为⽤户提供了⼀些预定义的字体风格:FontStyleRegular(正常)、FontStyleBold(加粗)、FontStyleItalic(斜体)、FontStyleBoldItalic (粗斜体)、FontStyleUnderline(下划线)和FontStyleStrikeout(删除线)。

字体尺⼨是⽤来指定字符所占区域的⼤⼩,通常⽤字符⾼度来描述。

字体尺⼨可以取毫⽶或英⼨作为单位,但为了直观起见,也常常采⽤⼀种称为点的单位,⼀点约折合为1/72英⼨。

对于汉字,还常⽤号数来表⽰字体尺⼨,初号字最⼤,以下依次为⼩初、⼀号、⼩⼀、⼆号、⼩⼆??,如此类推,字体尺⼨起来越⼩。

GDI+为⽤户提供了UnitDisplay(1/75英⼨)、UnitPixel(像素)、UnitPoint(点)、UnitInch(英⼨)、UnitDocument(1/300英⼨)、UnitMillimeter(毫⽶)等字体尺⼨单位。

使⽤GDI+中的Font类,可以直接通过构造函数创建⼀个字体对象,例如下列代码:Font font(&fontFamily, 12, FontStyleRegular, UnitPoint);构造函数的第⼀个参数是⽤来指定FontFamily类对象指针,第⼆参数是⽤来指定字体的尺⼨,它的实际⼤⼩取决于第四个参数所指定的尺⼨单位。

GDIGDI+使用到的相关函数介绍

GDIGDI+使用到的相关函数介绍

GDIGDI+使⽤到的相关函数介绍GDI,图像设备接⼝的简称。

⾸先介绍⼏个概念。

1、DC,设备上下⽂DeviceContext,也称为设备描述表。

它是⼀个关于如何绘制图形的⽅法集合,既可以绘制各种图形,也可以确定在应⽤窗⼝中绘制图形的⽅式,即绘图模式和映射模式。

Win32编程中使⽤HDC来标识。

DC类似于画布,我们想要绘制图形⾸先就需要获得DC。

常见获得DC的⽅法HDC hdc = ::GetDC(hwnd);::ReleaseDC(hwnd,hdc);此⽅法适合在窗⼝现有图形的基础上进⾏绘制。

(获得DC后⼀定要记得Release,否则会造成内存泄漏)PAINTSTRUCT ps;HDC hdc = ::BeginPaint(hWnd,&ps);::EndPaint(hWnd,&ps);BeginPaint函数就是将窗⼝上所有内容清除⼲净,然后在上⾯绘制。

参数ps可以指定更新的区域,⽽不必重绘制整个界⾯, BeginPaint和EndPaint总是被⽤来响应WM_PAINT 消息。

HDC hMemDC = ::CreateCompatibleDC(hDest);//其他绘图操作代码::BitBlt(hDest,x,y,w,h,hMemDC,0,0,SRCCOPY);//将hMemDC上绘制的图像数据拷贝到hDest上,界⾯此时才会显⽰::DeleteDC(hMemDC);通过调⽤CreateCompatibleDC函数来创建与⽬标DC兼容的内存DC,⼀般⽤于解决界⾯的闪烁问题。

2、常⽤的GDI对象画笔Pen:负责画线,画边框(矩形边框,圆边框,饼边框)都是采⽤画笔来操作的。

默认画笔是⿊⾊,宽度为1,样式为实线的画笔。

画刷Brush:负责填充矩形,填充圆、饼等以及刷窗⼝背景。

默认为⽩⾊画刷。

字体Font:负责基于具体字体对象的所有的⽂本绘制,默认字体是系统等宽字体,⽐如对话框标题。

LOGFONT(2013年)微软学习

LOGFONT(2013年)微软学习

LOGFONT(2013年)微软学习这个结构定义了字体的属性。

句法typedef struct tagLOGFONT {LONG lfHeight;LONG lfWidth;LONG lfEscapement;LONG lfOrientation;LONG lfWeight;BYTE lfItalic;BYTE lfUnderline;BYTE lfStrikeOut;BYTE lfCharSet;BYTE lfOutPrecision;BYTE lfClipPrecision;BYTE lfQuality;BYTE lfPitchAndFamily;TCHAR lfFaceName[LF_FACESIZE];} LOGFONT;成员•lfHeight•以逻辑单位指定字体的字符单元或字符的高度。

字符高度值(也称为em 高度)是字符单元格高度值减去内部前导值。

字体映射器以下列方式解释lfHeight中指定的值。

价值描述> 0 字体映射器将此值转换为设备单位,并将其与可用字体的单元格高度进行匹配。

0 字体映射器在搜索匹配项时使用默认高度值。

价值描述< 0 字体映射器将此值转换为设备单位,并将其绝对值与可用字体的字符高度进行匹配。

•对于所有高度比较,字体映射器会查找不超过请求大小的最大字体。

•这种映射在第一次使用字体时发生。

•对于MM_TEXT 映射模式,您可以使用以下公式为具有给定磅值的字体指定高度。

•lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);•其中MulDiv定义如下:•#define MulDiv(a,b,c) (((a)*(b))/(c))•lfWidth•以逻辑单位指定字体中字符的平均宽度。

如果lfWidth不为零,则将设备的纵横比与可用字体的数字化纵横比进行匹配,以找到最接近的匹配,由差异的绝对值确定。

logfont用法

logfont用法

logfont用法【实用版】目录1.logfont 简介2.logfont 的基本用法3.logfont 的参数设置4.logfont 的实例正文1.logfont 简介logfont 是 Python 中的一个库,用于处理各种字体和排版相关的任务。

它可以方便地让开发者设置字体、字号、颜色等样式,以满足不同的显示需求。

在Python 中,logfont 的使用非常简单,只需导入 logfont 库,即可轻松地实现各种字体设置。

2.logfont 的基本用法logfont 的基本用法主要包括以下几个方面:- 导入 logfont 库:在使用 logfont 之前,需要先导入 logfont 库,使用`import logfont`命令即可。

- 设置字体:使用`logfont.setfont()`函数可以设置文本显示的字体,其参数为字体文件路径。

例如:`logfont.setfont("SimHei.ttf")`。

- 设置字号:使用`logfont.setsize()`函数可以设置文本显示的字号,其参数为字号值(推荐使用 1~100 之间的整数)。

例如:`logfont.setsize(16)`。

- 设置颜色:使用`logfont.setcolor()`函数可以设置文本显示的颜色,其参数为颜色代码或颜色名称。

例如:`logfont.setcolor("red")`或`logfont.setcolor("red")`。

- 设置对齐方式:使用`logfont.setalign()`函数可以设置文本的对齐方式,其参数为对齐方式名称。

例如:`logfont.setalign("center")`。

- 设置行间距:使用`logfont.setline()`函数可以设置文本的行间距,其参数为行间距值。

例如:`logfont.setline(2)`。

easyx中drawtext用法

easyx中drawtext用法

easyx中drawtext用法在EasyX图形库中,drawtext函数的用法如下:cppVOID DrawText( HDC hdc, 设备上下文句柄LPCTSTR lpString, 字符串指针int nCount, 字符串长度,-1表示自动获取LPRECT lpRect, 绘制区域矩形指针UINT uFormat 格式标志);其中参数说明如下:- hdc:设备上下文句柄,即绘图设备的句柄。

- lpString:字符串指针,表示要绘制的文本。

- nCount:字符串长度,-1表示自动获取字符串长度。

- lpRect:绘制区域矩形指针,指定了绘制文本的位置和大小。

- uFormat:格式标志,用于指定文本的对齐方式。

使用示例:cpp#include <graphics.h>int main(){ 创建绘图窗口initgraph(800, 600); 设置字体样式LOGFONT font; ZeroMemory(&font, sizeof(font));_tcscpy_s(font.lfFaceName, _T("微软雅黑")); font.lfHeight = 24; HFONT hFont= ::CreateFontIndirect(&font); ::SelectObject(GetImageHDC(), hFont); 设置绘制区域矩形RECT rect = { 100, 100, 400, 200 }; 绘制文本DrawText(GetImageHDC(), _T("Hello, EasyX!"), -1, &rect, DT_CENTERDT_VCENTER); 关闭图形窗口closegraph(); return 0;}以上示例中,通过调用initgraph函数创建绘图窗口,然后使用SetBkMode和SetTextAlign函数设置绘图模式和对齐方式,接着使用DrawText函数绘制文本。

createfontindirecta代码块

createfontindirecta代码块`CreateFontIndirectA` 是一个 Windows API 函数,用于创建逻辑字体。

它可以用于设置字体的名称、高度、宽度、风格等属性。

下面是一个示例代码,展示了如何使用 `CreateFontIndirectA` 函数创建一个字体:```cpp#include <windows.h>#include <iostream>HFONT CreateCustomFont(const char *fontName, int height, int width, int escapement, int orientation, int weight, DWORD italic, DWORD charset, DWORD underline, DWORD strikeOut){LOGFONT lf;ZeroMemory(&lf, sizeof(LOGFONT));lf.lfHeight = height;lf.lfWidth = width;lf.lfEscapement = escapement;lf.lfOrientation = orientation;lf.lfWeight = weight;lf.lfItalic = italic;lf.lfCharSet = charset;lf.lfUnderline = underline;lf.lfStrikeOut = strikeOut;strcpy_s(lf.lfFaceName, fontName);return CreateFontIndirectA(&lf);}int main(){// 替换为你想要的字体名称const char *fontName = "Arial";int height = 30;int width = 0;int escapement = 0;int orientation = 0;int weight = 400;DWORD italic = 0;DWORD charset = DEFAULT_CHARSET;DWORD underline = 0;DWORD strikeOut = 0;HFONT font = CreateCustomFont(fontName, height, width, escapement, orientation, weight, italic, charset, underline, strikeOut);if (font){std::cout << "Font created successfully." << std::endl;// 使用创建的字体进行绘图或文本输出DeleteObject(font);}else{std::cerr << "Failed to create font." << std::endl;}return 0;}```在上面的示例中,我们定义了一个函数 `CreateCustomFont`,它接受字体的名称、高度、宽度、Escapement、Orientation、Weight、Italic、Charset、Underline 和 StrikeOut 等参数。

createfontindirectex与createfontindirect-概述说明以及解释

createfontindirectex与createfontindirect-概述说明以及解释1.引言1.1 概述在Windows编程中,字体的创建是一个常见的操作,而在实际开发中,我们经常会用到两个函数来创建字体,分别是createfontindirectex 和createfontindirect。

这两个函数在创建字体时提供了不同的参数和选项,可以满足不同的需求。

createfontindirectex是一个高级函数,它提供了更多的参数选项,可以更精细地控制字体的属性,包括字体大小、样式、粗细、倾斜度等。

与之相比,createfontindirect是一个简化版本的函数,它提供了更简单的参数,通常用于快速创建一种普通的字体。

本文将深入探讨createfontindirectex和createfontindirect这两个函数的使用方法和区别,帮助读者更好地理解和应用这两个函数在字体创建中的作用。

1.2 文章结构文章结构部分主要包括以下内容:1. 引言部分:介绍文章主题和背景,引出createfontindirectex和createfontindirect这两个API函数的作用和重要性。

2. 正文部分:分为两个小节,分别介绍createfontindirectex和createfontindirect这两个API函数的用法、参数和返回值。

3. 区别与应用场景部分:比较createfontindirectex和createfontindirect这两个API函数的区别,以及它们在不同场景下的应用情况。

4. 结论部分:总结createfontindirectex和createfontindirect这两个API函数的特点和优劣势,展望它们在未来的应用前景。

1.3 目的本文的目的是对createfontindirectex与createfontindirect这两个函数进行详细的介绍和比较分析。

logfont用法

logfont用法1. 什么是logfont?logfont是Windows API中的一种数据结构,用于描述字体的属性。

它定义了字体的名称、大小、粗细、斜体等属性,可以用于在Windows应用程序中设置和获取字体的相关信息。

2. logfont的结构logfont的结构定义如下:typedef struct tagLOGFONT {LONG lfHeight;LONG lfWidth;LONG lfEscapement;LONG lfOrientation;LONG lfWeight;BYTE lfItalic;BYTE lfUnderline;BYTE lfStrikeOut;BYTE lfCharSet;BYTE lfOutPrecision;BYTE lfClipPrecision;BYTE lfQuality;BYTE lfPitchAndFamily;TCHAR lfFaceName[LF_FACESIZE];} LOGFONT, *PLOGFONT;下面是对每个成员的解释:•lfHeight: 字体的高度,可以为正值(像素)或负值(逻辑单位)。

正值表示具体的像素高度,负值表示以点的高度为单位,可以通过设置lfHeight来实现字体的缩放效果。

•lfWidth: 字体的宽度,一般为0,表示使用默认值。

•lfEscapement: 字体的倾斜角度,一般为0,表示不倾斜。

•lfOrientation: 字符的方向角度,一般为0,表示水平方向。

•lfWeight: 字体的粗细,可以取值为FW_DONTCARE(不关心)、FW_THIN (细)、FW_NORMAL(正常)、FW_BOLD(加粗)等。

•lfItalic: 是否斜体,取值为TRUE或FALSE。

•lfUnderline: 是否下划线,取值为TRUE或FALSE。

•lfStrikeOut: 是否删除线,取值为TRUE或FALSE。

VS2010和MFC编程入门之48(字体和文本输出:文本输出)

VS2010MFC编程入门之四十八(字体和文本输出:文本输出)理解了CFont字体类,这里主要讲解文本输出的方法和实例。

文本输出过程在文本输出到设备以前,我们需要确定字体、字体颜色和输出的文本内容等信息。

Windows窗口的客户区由应用程序管理,所以我们还要在应用程序中控制输出文本的格式,例如后续字符的位置、换行等格式。

由此,文本的输出过程大致包括确定字体信息、格式化文本和执行输出操作三个步骤。

下面分别讲解。

1、确定字体信息文本在输出以前应该先确定字体信息,或者是当前正在使用的字体,或者是自定义的字体,之后就可以根据确定的字体来显示文本或者利用字体信息来设定文本的格式了,例如,我们可以根据当前字体的字符高度来确定下一行字符在什么位置输出。

自定义字体可以通过CFont类的创建字体的几个成员函数完成。

获取当前选择字体的信息可以使用API函数GetTextMetrics实现,此函数的原型如下:BOOL GetTextMetrics(__in HDC hdc,__out LPTEXTMETRIC lptm);参数hdc为设备上下文的句柄;参数lptm是指向TEXTMETRIC结构体变量的指针,此结构体变量用于接收字体信息。

TEXTMETRIC结构体的定义如下:C++代码typedefstructtagTEXTMETRIC {LONG tmHeight; // 字符高度LONG tmAscent; // 字符基线以上的高度LONG tmDescent; // 字符基线以下的高度LONG tmInternalLeading; // 由tmHeight成员指定的字符高度顶部的空间LONG tmExternalLeading; // 行间距LONG tmAveCharWidth; // 字符的平均宽度LONG tmMaxCharWidth; // 字符的最大宽度LONG tmWeight; // 字符的粗度LONG tmOverhang; // 合成字体间附加的宽度LONG tmDigitizedAspectX; // 为输出设备设计的x轴尺寸LONG tmDigitizedAspectY; // 为输出设备设计的y轴尺寸TCHAR tmFirstChar; // 字体中第一个字符值TCHAR tmLastChar; // 字体中最后一个字符值TCHAR tmDefaultChar; // 替换字体中没有的字符TCHAR tmBreakChar; // 作为分隔符的字符BYTE tmItalic; // 非0则表示字体为斜体BYTE tmUnderlined; // 非0则表示字体有下划线BYTE tmStruckOut; // 非0则表示字符带有删除线BYTE tmPitchAndFamily;// 字体间距和字体族BYTE tmCharSet; // 字符集} TEXTMETRIC, *PTEXTMETRIC;2、格式化文本格式化文本一般包括两种,一种是确定文本行中后续文本的位置,另一种是确定换行时下一行文本的位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LogFont设置字体
example one: 打印出设置好的字体
LOGFONT logFont;
logFont.lfHeight = 8;
logFont.lfWidth = 0;
logFont.lfEscapement = 0;
logFont.lfOrientation = 0;
logFont.lfWeight = FW_NORMAL;
logFont.lfItalic = 0;
logFont.lfUnderline = 0;
logFont.lfStrikeOut = 0;
logFont.lfCharSet = ANSI_CHARSET;
logFont.lfOutPrecision = OUT_DEFAULT_PRECIS; logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; logFont.lfQuality = PROOF_QUALITY;
logFont.lfPitchAndFamily=VARIABLE_PITCH |
FF_ROMAN;
strcpy (logFont.lfFaceName, "Times New Roman");
// Initialize the position of text in the window.
UINT position = 0;
// Create and display eight example fonts.
// for (UINT x=0; x<8; ++x)
// {
UINT x = 7;
// Set the new font's height.
logFont.lfHeight = 16 + (x*8);
// Create a new font and select it into the DC. CFont font;
font.CreateFontIndirect( &logFont );
CFont *oldFont = pDC->SelectObject(&font);
// Print text with the new font.
position += logFont.lfHeight;
pDC->TextOut(20, position, "A sample font.");
// Restore the old font to the DC.
pDC->SelectObject(oldFont);
// }
example two: 大小改为20
LOGFONT lf;
CFont *m_pfont;
m_pfont=m_cEdit1.GetFont();
m_pfont->GetLogFont(&lf);
lf.lfHeight=20;
m_pfont->Detach();
m_font.CreateFontIndirect(&lf);
m_cEdit1.SetFont(m_pfont,TRUE);
一、设置字体格式
void C**View::OnDraw(CDC*pDC)
{
pDC->SetBkMode(TRANSPARENT);//输出透明
字体(使输出的文本背景与控件背景颜色相同)
pDC->SetTextColor( , , );
//定义字体结构
LOGFONT stFont;
//设置字体格式
..........
}
LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:
typedef struct tagLOGFONTA
{
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA
其各个字段的含义如下:
:指定逻辑单位的字符或者字符元高度
:指定逻辑单位的字体字符的平均宽度
:指定每行文本输出时相对于设备x
轴的角度,其单位为1/10度
:指定字符基线相对于设备x轴的角度,其单位为1/10度。

此值在Win9X中和lfEscapement具有相同的值,而在WinNT下有时候可能不同
:指定字体的重量,Windows中字体重量表示字体的粗细程度,其范围在0~1000之间,正常为400,粗体为700,若此值为空,则使用默认的字体重量
:此值为TRUE时,字体为斜体
:此值为TRUE时,字体带下划线
:此值为TRUE时,字体带删除线
:指定所使用的字符集,如
GB2312_CHARSET,CHINESEBIG5_CHARSET等
:指定输出精度,它定义了输出与所要求的字体高度、宽度、字符方向及字体类型等相接近的程度
:指定剪辑精度,它定义了当字符的一部分超过剪辑区域时对字符的剪辑方式
:指定输出质量,它定义了GDI在匹配逻辑字体属性到实际的物理字体时所使用的方式
:指定字体的字符间距和族
:指向NULL结尾的字符串的指针,此字符串即为所使用的字体名称,其长度不能超过32个字符,如果为空,则使用系统默认的字体。

相关文档
最新文档