前两天发了一个同样的贴,分送了,但问题没有解决。
我得到GDI+的字体Font的字符宽度,但用GDI+的GetLogFontA得到的宽度是0.而GDI的方法取得字体宽度的方法非常多,我就想创建一个跟Font一样大小的字体CFont,在CFont里取得字体宽度,相当于取得了Font字体的宽度,问题怎样创建一样大小的字体?
其实我想得到的是字符串的长度,而不是字体。//gdi获得字体宽度的方法
CClientDC dc(this);
CFont font;
font.CreatePointFont(48, L"Arial");
dc.SelectObject(font);
CSize size= dc.GetTextExtent(L"字体大小");//运行后发现48大小的字体非常小//GDI+
FontFamily fontFamily(L"Arial");//选择一种字体
Gdiplus::Font fontMsg(&fontFamily, 48, FontStyleRegular,UnitPoint);//创建一种字体
//运行后发现,48大小的字体非常大。第四个参数改成下面 Unit的任何一种,都比gdi 48的字体大。
//typedef enum {
// UnitWorld = 0,
// UnitDisplay = 1,
// UnitPixel = 2,
// UnitPoint = 3,
// UnitInch = 4,
// UnitDocument = 5,
// UnitMillimeter = 6
//} Unit;
我得到GDI+的字体Font的字符宽度,但用GDI+的GetLogFontA得到的宽度是0.而GDI的方法取得字体宽度的方法非常多,我就想创建一个跟Font一样大小的字体CFont,在CFont里取得字体宽度,相当于取得了Font字体的宽度,问题怎样创建一样大小的字体?
其实我想得到的是字符串的长度,而不是字体。//gdi获得字体宽度的方法
CClientDC dc(this);
CFont font;
font.CreatePointFont(48, L"Arial");
dc.SelectObject(font);
CSize size= dc.GetTextExtent(L"字体大小");//运行后发现48大小的字体非常小//GDI+
FontFamily fontFamily(L"Arial");//选择一种字体
Gdiplus::Font fontMsg(&fontFamily, 48, FontStyleRegular,UnitPoint);//创建一种字体
//运行后发现,48大小的字体非常大。第四个参数改成下面 Unit的任何一种,都比gdi 48的字体大。
//typedef enum {
// UnitWorld = 0,
// UnitDisplay = 1,
// UnitPixel = 2,
// UnitPoint = 3,
// UnitInch = 4,
// UnitDocument = 5,
// UnitMillimeter = 6
//} Unit;
解决方案 »
- 发布VC++使用installshield 发布时,不显示skin皮肤问题
- recv的奇怪问题
- 大批量CSV文本文件入库,哪种方式效率比较高???
- 文本框问题。
- ClassWizard 会删除掉自己不运行的消息映射宏,大家有没有什么办法解决!
- 创建窗口时怎么把最小化最大化和关闭三个去掉?
- 如何得到拨号上网时的网络速度
- Help!定义了一个结构,如何能够自动给该结构的每一个成员自动赋值?
- 请问怎么在运行时把一个窗口的标题去掉?
- 菜鸟问题,大送分!!!!!!!!
- 按钮的透明效果(看过CButtonST的最好)
- warning LNK4049: locally defined symbol是怎么回事?
int nPointSize,
LPCTSTR lpszFaceName,
CDC* pDC = NULL
);nPointSize
Requested font height in tenths of a point. (For instance, pass 120 to request a 12-point font.)
中的48在实际会之中是4.8这个参数是取其1/10为其字体大小,不是通常一以上的48px或48pt~所以,你要画48px或48pt的字体,就要把这个参数设置为480