查看单个帖子
旧 2008-07-08, 11:09 AM   #3
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 当我在其他机器上浏览的时候,发现字体不是设置的字体,字体变大了;而且有表格显示错位了;我的机器的分辨率是800*600,请问在其他高分

如何让字体的大小不随系统DPI的改变而变化?
判断DPI的变化,重新设置字体。Top

2 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-11-29 17:18:55 得分 0

直接设置字体的 Font.Height
他和Size的关系是

height = - size * dpi / 72;
所以这个Hight的绝对值就是字体的像素Top

3 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-11-29 17:27:21 得分 0

在程序初始化的时候设置字体的Font.Height

96dpi下 size 9对应 -12Top

4 楼chifengwatch(chifengwatch)回复于 2003-11-29 18:54:27 得分 10

同意pazee(耙子)Top

5 楼Bors(Bors)回复于 2003-11-29 23:42:44 得分 0

我把Form上的所有的控件的ParentFont设为true.
在Form的构造函数和FormCreat()中都加了Font->Height = -12;
然后再120DPI的系统下运行,字还是大大的,没有变成96DPI时的样子。
奇怪,是不是我哪里做的不对?Top

6 楼jbz(虚心求教)回复于 2003-11-30 00:02:21 得分 5

傻问一次:

“系统DPI”在哪里可以设置?Top

7 楼pazee(耙子)(今年过年不收礼,收礼只收尿不湿)回复于 2003-11-30 01:09:50 得分 25

DPI 在控制面板-〉显示属性-〉外观-〉字体

to 楼主:
并不是所有的字号windows都支持,
12*72/120=7.2

windows没办法支持 Size=7.2磅的字号,所以他就显示不了。
这一点你可以通过调整字号为7看看,应该不行。

除非你用大字体,这个办法才行。Top

8 楼iYoung()回复于 2003-11-30 16:44:00 得分 0


Form->Scaled = false 后,窗体上所有对象大小都不随系统 dpi 变化而变化,所以这个设置已经足够。不过要注意,由于标题栏等系统对象的尺寸将发生变化,窗体的客户区尺寸也可能发生变化,需要有额外的调整。

指定了字体 Height,则无论在 96dpi 下还是 120dpi 下,文字的高度(pixels)都是相同的,和字号无关。Top

9 楼Bors(Bors)回复于 2003-11-30 17:44:38 得分 0

我在Form的构造函数和FormCreat()中都加了Font->Height = -12;
但在DPI120和96下面就是不一样。
是不是加的地方不对?
Top

10 楼iYoung()回复于 2003-12-02 20:33:34 得分 20

不可能不对。注意你设置的是 Form 的字体。
Top

11 楼warton(创业群13734424 http://www.anywhy.cn)回复于 2003-12-02 20:45:43 得分 25

void __fastcall TMainFm::FormCreate(TObject *Sender)
{

if(PixelsPerInch!=96)
{
ScaleBy(96,PixelsPerInch);
}
}Top

12 楼Bors(Bors)回复于 2004-01-11 15:56:36 得分 0

我发现是和字体有关。有的字体可以,有的就不行。
不过,多谢各位回答。
huangyhg离线中   回复时引用此帖