如题:
因为字体的宽度是不一样的,现在有一种字体,
//创建字体
VERIFY(mFont.CreateFont(120,0,0,0,
FW_NORMAL,
FALSE,FALSE,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
_T("方正准圆简体")));
有一个CString str;
比如:str为"999"和str为"中央电视台"是在显示出来的宽度是不一样,现在问题就是:怎么获取字符串str的宽度?GetTextMetrics()函数获取可不可以?
给个例子谢谢!!
因为字体的宽度是不一样的,现在有一种字体,
//创建字体
VERIFY(mFont.CreateFont(120,0,0,0,
FW_NORMAL,
FALSE,FALSE,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
_T("方正准圆简体")));
有一个CString str;
比如:str为"999"和str为"中央电视台"是在显示出来的宽度是不一样,现在问题就是:怎么获取字符串str的宽度?GetTextMetrics()函数获取可不可以?
给个例子谢谢!!
解决方案 »
- CxImage 怎么安装使用
- 最近学习数据结构 求推荐使用STL的数据结构书!!
- 得到的listview header某一列名字总是为空,求解~~
- 已经获取网页代码,vc用什么办法可以检测到其中是否包含恶意代码?
- CIPAddressCtrl的问题
- 怎样使一组控件不可用?
- 从CWnd继承下来得自定义控件CMyChart为什么不能响应鼠标时间而只能响应绘制时间
- 怎样在VC++中的Win32 Application生成的程序中加入对话框
- 十分钟前都能用编译通过的代码,重启机器后出现下面的错误,小弟郁闷中,请请GGJJ批教
- 连接时出现的问题,各位帮帮忙!
- 窗口的绘图过程
- 如何将ACCESS自动编号字段改成多位
int DrawTextEx(
HDC hdc, // handle to DC
LPTSTR lpchText, // text to draw
int cchText, // length of text to draw
LPRECT lprc, // rectangle coordinates
UINT dwDTFormat, // formatting options
LPDRAWTEXTPARAMS lpDTParams // more formatting options
);
dwDTFormat 填 DT_CALCRECTDT_CALCRECT Determines the width and height of the rectangle. If there are multiple lines of text, DrawTextEx uses the width of the rectangle pointed to by the lprc parameter and extends the base of the rectangle to bound the last line of text. If there is only one line of text, DrawTextEx modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawTextEx returns the height of the formatted text, but does not draw the text.
使用CSize cs=pDC-> GetTextExtent(str);
或者CSize cs = pDC->GetTextExtent(str); 获取的字符串宽度怎么就才获取一个字的宽度呢?
记得好像是这个函数。
不会用这个函数,能否给个例子,比如就计算字符串CString str = _T"中央电视台"的长度?
字体为VERIFY(mFont.CreateFont(120,0,0,0,
FW_NORMAL,
FALSE,FALSE,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
_T("方正准圆简体")));
int dis_num = 0,line_width = 0;
SIZE str_size = {0};
GetTextExtentExPoint(hDC,str,lstrlen(str),line_width,&dis_num,NULL,&str_size);
str = "导视"时得到str_size{cx=30,cy=16}
str = "中央一台"时得到str_size{cx=60,cy=16}
字体为VERIFY(mFont.CreateFont(50,0,0,0,
FW_NORMAL,
FALSE,FALSE,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS,
_T("方正准圆简体")));我动态移动窗口来显示只有一半能显示出来啊
int cx=GetSystemMetrics(SM_CXSCREEN); //屏幕宽度
int cy=GetSystemMetrics(SM_CYSCREEN); //屏幕高度
this->MoveWindow(cx-str_size.cx,100,cx,200,true);//移动窗体并改变大小求帮忙