你说的是Canvas.font.Height 还是Canvas.font.Size,如果是前者如下:
DefFontData.Height:=-MulDiv(9,ScreenLogPixels,72);应该是互为相反数的关系即
Canvas.TextHeight('a'):=-Canvas.font.Height ;
详情见Graphics.pas找initdeffontdata;
如果是后者,自已多改几次Font.size找规律。
DefFontData.Height:=-MulDiv(9,ScreenLogPixels,72);应该是互为相反数的关系即
Canvas.TextHeight('a'):=-Canvas.font.Height ;
详情见Graphics.pas找initdeffontdata;
如果是后者,自已多改几次Font.size找规律。
解决方案 »
- 求急:Delphi中不能调用Dll(PB写的DLL)(运行环境win2000 P+Delphi 5.0)
- 如何让mediaplayer控件实现多个文件连续播放?急
- mscomm奇怪问题!怎么除了$00-$80,$ff 之外的其他数据????
- datetimepicker第三方控件在哪下的到
- 哪里出了SQL语法错误
- ----> 追加100分!--->在dbctrlgrid中如何单独对指定的数据显示控件设置背景色?(半天没弄出来,急)
- 如何返回到shelllistview的上一级目录
- BorlandSoft的产品非常全面,我愿意免费提供BorlandSoft.com的邮箱和二级域名、网站空间,大家意下如何?限30000个。
- adoquery1查询到的数据,在quickrep1中显示的问题
- 在Win64位下开发非.Net数据库程序,Delphi还行吗??
- 客户端用ADO连接SQL,客户端在服务器上面的数据库里面建立表,可是客户端提示出“adoquery1:commandtext does not return a result set” 可是这个时候表已经在服务器上面建好了 ,这是怎么回事呀?(biu)
- COM+的事务问题,分数不够再加哦!!!!!高手去哪了????
我就是这个地方搞不懂!!!!
你好,我就是ZCB007,现在叫wangzh(独孤求问)啦,
你把字体改成宋体试试。
或Font.charset:=GB2312_CHARSET
不要是ANSI_CHARSET
你把Font.CharSet改成GB2312_CHARSET试试。不要是ANSI_CHARSET
详情见Graphics.pas找initdeffontdata
20分先给你了!!!!!!!!!!!
to lpf78(lpf):一般常用charSet 就两种GB2312_CHARSET(中文)和ANSI_CHARSET(外文)还有其他类型,见原码
procedure InitDefFontData;
var
Charset: TFontCharset;
begin
//ScreenLogPixels:屏幕的象素
DefFontData.Height := -MulDiv(8, ScreenLogPixels, 72);// 72 div 8=9
if not SysLocale.FarEast then Exit;
Charset := GetDefFontCharset;
case Charset of
SHIFTJIS_CHARSET:
begin
DefFontData.Name := '俵俽 俹僑僔僢僋';
DefFontData.Height := -MulDiv(9, ScreenLogPixels, 72);//72 div 9=8
DefFontData.CharSet := CharSet;
end;
GB2312_CHARSET:
begin
//本人加的
DefFontData.Name := '宋体';
DefFontData.Height := -MulDiv(9, ScreenLogPixels, 72);//72 div 9=8
DefFontData.CharSet := CharSet;
end;
end;
end;
这就是为什么宋体9号大小才和英文8号差不多,规律实在不好找,你的程序最多也就这么个情况:
ANSI_CHARSET 0 ANSI characters.
DEFAULT_CHARSET 1 Font is chosen based solely on Name and Size. If the described font is not available on the system, Windows will substitute another font.
SYMBOL_CHARSET 2 Standard symbol set.
MAC_CHARSET 77 Macintosh characters. Not available on NT 3.51.
SHIFTJIS_CHARSET 128 Japanese shift-jis characters.
HANGEUL_CHARSET 129 Korean characters (Wansung).
JOHAB_CHARSET 130 Korean characters (Johab). Not available on NT 3.51GB2312_CHARSET 134 Simplified Chinese characters (mainland china).
CHINESEBIG5_CHARSET 136 Traditional Chinese characters (taiwanese).
GREEK_CHARSET 161 Greek characters. Not available on NT 3.51.
TURKISH_CHARSET 162 Turkish characters. Not available on NT 3.51
VIETNAMESE_CHARSET 163 Vietnamese characters. Not available on NT 3.51.
HEBREW_CHARSET 177 Hebrew characters. Not available on NT 3.51
ARABIC_CHARSET 178 Arabic characters. Not available on NT 3.51BALTIC_CHARSET 186 Baltic characters. Not available on NT 3.51.
RUSSIAN_CHARSET 204 Cyrillic characters. Not available on NT 3.51.
THAI_CHARSET 222 Thai characters. Not available on NT 3.51
EASTEUROPE_CHARSET 238 Includes diacritical s for eastern european countries. Not available on NT 3.51.
OEM_CHARSET 255 Depends on the codepage of the operating system.
做一个类似这样的语句:
case font.charset of
value1:
begin
规律1:canvas.font.height:=-canvas.font.textheight('a');
end;
value2:
beign
canvas.font.height:=-canvas.font.textheight('a')+2;
end;
........
规律自已这样试:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(Inttostr(canvas.font.height));
end;procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(Inttostr(canvas.textheight('a')));
end;改一次Font.name:试一次规律,多试几次把你的规律就找到了,别的我也没有么办法。
惭愧,惭愧。。