超级版主
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
|
回复: 当我在其他机器上浏览的时候,发现字体不是设置的字体,字体变大了;而且有表格显示错位了;我的机器的分辨率是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
我发现是和字体有关。有的字体可以,有的就不行。
不过,多谢各位回答。
|