社区
界面
帖子详情
为什么GetTextExtentPoint调用之前要给DC设置字体它在会准确计算呢?
softrain
2005-08-01 11:24:28
难道默认字体它就计算错误了?
MSDN上并没有提到设置字体的问题啊。请大家给个合理的解释。
...全文
201
8
打赏
收藏
为什么GetTextExtentPoint调用之前要给DC设置字体它在会准确计算呢?
难道默认字体它就计算错误了? MSDN上并没有提到设置字体的问题啊。请大家给个合理的解释。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
softrain
2005-08-02
打赏
举报
回复
原来是这样,谢谢各位。
吹泡泡的小猫
2005-08-01
打赏
举报
回复
Windows使用的字体不是标准宽度的,所以,同一个字符串使用不同的字体总的宽度可不一样
goodboyws
2005-08-01
打赏
举报
回复
不同地方的默认字体不一定一样
thisisll
2005-08-01
打赏
举报
回复
你不设置字体
那个参数传什么进去?
softrain
2005-08-01
打赏
举报
回复
如果我不设置字体,它是不是用默认字体计算?
如果是,为什么用默认字体输出文本,实际输出的长度要比计算出来的宽度小很多呢?
thisisll
2005-08-01
打赏
举报
回复
The GetTextExtentPoint function uses the currently selected font to compute the dimensions of the string.
说了啊
goodboyws
2005-08-01
打赏
举报
回复
HDC dc= GetDC( hWndBackGround_ ) ;
不等于菜单自绘时DrawItem传进来的DC,明白?
softrain
2005-08-01
打赏
举报
回复
我一开始这样没有设置字体:
HDC dc= GetDC( hWndBackGround_ ) ;
SIZE sz;
GetTextExtentPoint(dc,pItem->ch,strlen(pItem->ch),&sz);
ReleaseDC( 0, dc );
MSItem->itemWidth= sz.cx;
MSItem->itemHeight= sz.cy + 2;
菜单字体输出时右边会留一大片空地。
后来改正这样:
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
strcpy(lf.lfFaceName, "宋体");
lf.lfHeight = 12;
HFONT hfont = CreateFontIndirect(&lf);
HDC dc= GetDC( hWndBackGround_ ) ;
HFONT hold = (HFONT)SelectObject(dc,hfont);
SIZE sz;
GetTextExtentPoint(dc,pItem->ch,strlen(pItem->ch),&sz);
ReleaseDC( 0, dc );
MSItem->itemWidth = sz.cx +10;
MSItem->itemHeight = sz.cy + 4;
DeleteObject(SelectObject(dc,hold));
这样菜单在文字输出时宽度就刚好了。
为什么用系统默认的字体计算宽度,再用系统默认字体输出宽度会不同,
而我用宋体计算宽度用系统默认字体输出就刚刚好?
WindowsAPI学习笔记三 -
字体
设置
与输出
Windows系统中经常使用GDI进行文本输出从某种意义上来说图形和文本并没有本质上的界限很多时候windows把文本也当作图形对待。在windows编程中文本操作首先要获得文本句柄此外还要
设置
字体
字符大小字符颜色等有关属性并将它们选入设备环境。
设置
文本的设备环境1.自定义
字体
可以使用函数CreateFont自定义...
Windows API 函数学习(8)---处理文本和
字体
一、显示文本
int
Draw
Tex
t
(H
DC
h
dc
,LPCTSTR lpString,
int
nCount,LPRECT lpRect,U
INT
uFormat);//该函数在由lpRect参数指定的矩形中显示格式化的文本,可以调整左对齐、右对齐以及居中显示。BOOL
Tex
t
Out(H
DC
h
dc
,
int
nXStart,
int
nYStart,LPCTSTR lpString,
int
38_定制需求改程序显示
字体
,这些API得掌握。
系统提供了6种备用
字体
,前面说过GetStockObject函数用于获取备用(或者说库存)画笔、画刷、
字体
等的句柄”,获取
字体
句柄以后,可以通过
调用
SelectObject函数把
字体
选入
DC
中,以后通过GDI函数进行文本绘制就
会
使用新的
DC
属性。一些备用
字体
如下表所示。SelectObject函数可以把一个GDI对象选入指定的
DC
中∶函数执行成功,返回原来(也就是被替换掉的)对象的句柄。
文本输出方法与
字体
的
设置
学习目的 掌握获取
字体
句柄的两种方法;
调用
CreateFont函数创建自定义
字体
;
调用
Set
Tex
t
Color和SetBkColor函数
设置
字体
的颜色和背景色; 掌握文本输出的过程(获取
字体
信息, 格式化文本, 输出文本). 1. 掌握获取
字体
句柄的方法: HFONT hF; //定义
字体
句柄变量hF hF=GetStockObject(); //获...
点阵
字体
, 矢量
字体
点阵
字体
http://zh.wikipedia.org/wiki/%E7%82%B9%E9%98%B5%E5%AD%97%E4%BD%93 点阵
字体
也叫位图
字体
,其中每个字形都以一组二维像素信息表示。这种文字显示方式于较早前的电脑系统(例如未有图形接口时的 DOS 操作系统)被普遍采用。由于位图的缘故,点阵
字体
很难进行缩放,特定的点阵
字体
只能清晰地显示在相应的字号下,否则文字只被强行...
界面
15,980
社区成员
115,900
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章