有请大神帮忙,试了一天了,根据高度计算字体的最佳FontSize

PackChen 2019-11-08 01:29:34
给出一个高度值,得到当前选入字体的最佳字号,想实现单元自动缩小填充的功能,不过我要的是根据高度计算
...全文
206 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
PackChen 2019-11-10
  • 打赏
  • 举报
回复
我直接用老方法,从1开始循环判断,因为VB用不了CreatePointFont,同时楼上的对照表对不同字体有误差
schlafenhamster 2019-11-09
  • 打赏
  • 举报
回复
Font.CreatePointFont(500,"微软雅黑");// 80=8 point
PackChen 2019-11-09
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
BOOL CreatePointFont( int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL );

想问下老哥,nPointSize要求是字段的1/10,这个是什么意思?是不是高度还要进行换算?
PackChen 2019-11-09
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:

void CSDI2View::OnDraw(CDC* pDC)
{
CSDI2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here

CRect rc(10, 10, 300, 100);
pDC->Rectangle(&rc);
int nH = rc.Height();

CFont mFont;
mFont.CreateFont(-rc.Height(),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_T("Arial"));
CFont *pOldFont = pDC->SelectObject(&mFont);
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(_T("ABCE"), &rc, DT_TOP|DT_BOTTOM);

}

不行哦,老哥,这个我以前处理过,如果高度很大,那么对应的字号越不准
schlafenhamster 2019-11-09
  • 打赏
  • 举报
回复
BOOL CreatePointFont( int nPointSize, LPCTSTR lpszFaceName, CDC* pDC = NULL );

zgl7903 2019-11-09
  • 打赏
  • 举报
回复

void CSDI2View::OnDraw(CDC* pDC)
{
  CSDI2Doc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
  // TODO: add draw code for native data here
  
  CRect rc(10, 10, 300, 100);
  pDC->Rectangle(&rc);
  int nH = rc.Height();
  
  CFont mFont;
  mFont.CreateFont(-rc.Height(), 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    _T("Arial"));
  CFont *pOldFont = pDC->SelectObject(&mFont);
  pDC->SetBkMode(TRANSPARENT);
  pDC->DrawText(_T("ABCE"), &rc, DT_TOP|DT_BOTTOM);
  
}
schlafenhamster 2019-11-09
  • 打赏
  • 举报
回复
八号=5磅(5pt) ==(5/72)*96=6.67 =6px
七号=5.5磅 ==(5.5/72)*96=7.3 =7px
小六=6.5磅 ==(6.5/72)*96=8.67 =8px
六号=7.5磅 ==(7.5/72)*96=10px
小五=9磅 ==(9/72)*96=12px
五号=10.5磅 ==(10.5/72)*96=14px
小四=12磅 ==(12/72)*96=16px
四号=14磅 ==(14/72)*96=18.67 =18px
小三=15磅 ==(15/72)*96=20px
三号=16磅 ==(16/72)*96=21.3 =21px
小二=18磅 ==(18/72)*96=24px
二号=22磅 ==(22/72)*96=29.3 =29px
小一=24磅 ==(24/72)*96=32px
一号=26磅 ==(26/72)*96=34.67 =34px
小初=36磅 ==(36/72)*96=48px
初号=42磅 ==(42/72)*96=56px
PackChen 2019-11-08
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
何为 “最佳字号”?

比如高度是15像素,字体是Tahoma,那么最适合字号就是-9,问题是如何根据15像素得到-9这个字号
schlafenhamster 2019-11-08
  • 打赏
  • 举报
回复
何为 “最佳字号”?

16,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧