字体类型变化产生的悲剧

2540546520 2010-12-04 09:04:52
现在我在一个label控件上写上一个 ‘国’ 字

现在我这样在button1的事件中设置如下
label.font.size:=100;
label.font.style:=[fsItalic];

这样的话label的字体变成斜体后就会显示不完全

现在boss要我计算出变成斜体后的矩形框宽高,我使用API, textextent计算,斜体的大小和正常字体是一样的
现在咋办 ,来个高手帮忙计算计算
...全文
143 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuang_bx 2010-12-05
  • 打赏
  • 举报
回复
Label1.AutoSize 这个没用吗,如果是中文,就把字体设置一下
Oraclers 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gobiz 的回复:]
一个比较笨的方法:

1、创建一个尽可能大的Bitmap,至少可以让这个字可以完整的显示出来。
2、设置Canvas的背景色为白色,字体颜色为黑色,字体尺寸为100,斜体。
3、在Canvas上输出这个字。
4、遍历Bitmap上的所有像素点,判断该像素点的颜色为黑色,来获取相应的Left、Right、Top、Bottom,并由此得到这个字体所占据矩形框的Width和Height。
[/Quote]
用得著這麼復雜嗎,變成斜體後只要將Label的寬度加大一點就可以了,我算了下寬度系數為1.177左右。
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Font.Size := 100;
Label1.Font.Style := [fsItalic];
Label1.Width := round(Label1.Width*1.177);
end;
2540546520 2010-12-04
  • 打赏
  • 举报
回复
是这样的哈
我的背景是固定的 是白色的 但是有黑点的 而且字体颜色是可变的 所以不能通过像素点判断的
而且 字 一定是放在Label上的
gobiz 2010-12-04
  • 打赏
  • 举报
回复
一个比较笨的方法:

1、创建一个尽可能大的Bitmap,至少可以让这个字可以完整的显示出来。
2、设置Canvas的背景色为白色,字体颜色为黑色,字体尺寸为100,斜体。
3、在Canvas上输出这个字。
4、遍历Bitmap上的所有像素点,判断该像素点的颜色为黑色,来获取相应的Left、Right、Top、Bottom,并由此得到这个字体所占据矩形框的Width和Height。
2540546520 2010-12-04
  • 打赏
  • 举报
回复
2540546520 2010-12-04
  • 打赏
  • 举报
回复
2540546520 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bdmh 的回复:]
对于斜体字可能要加一个系数值
[/Quote]
我看到 斜体的显示 好像和 size属性有关系 那这个系数值应该怎么计算呢
bdmh 2010-12-04
  • 打赏
  • 举报
回复
对于斜体字可能要加一个系数值
2540546520 2010-12-04
  • 打赏
  • 举报
回复
我就是想获取字体宽度 来设置 label 宽度
一定要计算斜体字体宽度的 谢谢
2540546520 2010-12-04
  • 打赏
  • 举报
回复
按钮的尺寸调大一些??
额 不明白你的意思
JPEXE 2010-12-04
  • 打赏
  • 举报
回复
把你的那按钮的尺寸调大一些。
2540546520 2010-12-04
  • 打赏
  • 举报
回复
Oraclers 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chensongbin0 的回复:]
哎 有没有高手给个标准点,精确些的算法 谢谢
[/Quote]
你不就是要解决问题吗?要精确的话你先计算一下斜体字倾斜角度(或者有一个已知角度)然后通过三角函数可计算出。倾斜角度的算法可以参照:http://wenku.baidu.com/view/21c5e91ffc4ffe473368abab.html
2540546520 2010-12-04
  • 打赏
  • 举报
回复
哎 有没有高手给个标准点,精确些的算法 谢谢

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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