如何实现Image.Canvas.TextOut函数中字符串的分行显示?
  如何设置其字体大小?用Image1.canvas.font.size:=5;不管用?请求赐教,谢谢!

解决方案 »

  1.   

    Window默认字体可没5号字Image1.Canvas.Font.Name:='宋体';
    Image1.Canvas.Font.Size:=5;

    Image1.Canvas.Font.Size:=15;试试
      

  2.   

    TextOUt是没有用的,只能用DrawText来实现。
    DrawText(Image1.Canvas, 'YourString', -1, Rect(0, 0, Image1.Width, Image1.Height), DT_WORDBREAK or DT_CENTER or DT_TOP)
      

  3.   

    至于换行,用TextOut不好实现,一定要用的话用多个TextOut,在参数中改变位置!或者改用DrawTextvar Rect:TRect;Rect:=Image1.ClientRect;
    DrawText(Image1.Canvas.Handle,'第一行'+#13+#10+'第二行',-1,Rect,DT_CENTER+DT_VCENTER);
      

  4.   

    换行的好麻烦,要自己写算法算阿。
    帮你写不太可能了给点思路自己想吧iwidth := image1.Canvas.TextWidth(longstr);      //得到字的宽度
    iheight := image1.canvas.TextHeight(longstr);     //得到字的长度
    if iWidth > image1.Width then  //判断是否要换行
    begin
      Count := iWidth div image1.Width ;  //算出要画多少行
      //然后截取出要画的字符的长度,这里要算,中文和英文的算法肯定不同
      中文的没有算好会有乱码的
    end;