要求: 
1,输出的文字在矩形中央,不能超过矩形区域. 
2,输入的文字字体为宋体. 应该是将矩形将最小边长,折算为正方形,在该正方形内输出文本吧. 
因为汉字都是方块字. 要输出多大的字体才合适呢?怎么进行精确计算. 要求: 
1,输出的文字在矩形中央,不能超过矩形区域. 
2,输入的文字字体为宋体. 应该是将矩形将最小边长,折算为正方形,在该正方形内输出文本吧. 
因为汉字都是方块字. 要输出多大的字体才合适呢?怎么进行精确计算. 

解决方案 »

  1.   

    告诉你一个有用的东西
    Graphics.MeasureString
      

  2.   

    不是,是
      Canvas.TextHeight()
      Canvas.TextWidth()
      

  3.   

    你可以用这个控件:Bevel1
    和Label1控件,
    你在Label1控件中输入文字
    Label1.alignment:=tacenter;
    label1.autosize:=true;
    label1.Width :=label1.Height ;
    bevel1.height:=label1.height+4;
    bevel1.width:=label1.width+4;
    bevel1.top:=label1.top-2;
    bevel1.left:=label1.left-2;
    你可以试试,这样就可以让文字在中间了。
      

  4.   

    同意hju_sea
    的说法,我试了还不错。
      

  5.   

    刚才好像回了一个相同的帖子。。var 
        LogFont:   TLogFont; 
        hOldFont,   hNewFont:   HFont; 
    begin 
        GetObject(Canvas.Font.Handle,SizeOf(LogFont),Addr(LogFont)); 
        LogFont.lfHeight   :=   30; 
        LogFont.lfWidth   :=   20; 
        hNewFont   :=   CreateFontIndirect(LogFont); 
        hOldFont   :=   SelectObject(Canvas.Handle,hNewFont); 
        Canvas.TextOut(20   ,   20,   'This   is   a   test   string'); 
        hNewFont   :=   SelectObject(Canvas.Handle,hOldFont); 
        DeleteObject(hNewFont); 
    end;
      

  6.   

    设置font.height为矩形高度就可以了
      

  7.   

    hju_sea 提供了一个好思路,不过,leeky读取点阵字库,我比较感兴趣,如何读取?能继续交流一下吗?