GDI+ 在Delphi程序的应用 -
GDI+有个FontCollection类,一般情况下很少用到,很多人甚至连这些类是干什么的都不知道。FontCollection本身是个基类,它有两个派生类InstalledFontCollection和PrivateFontCollection,这两个类用好了,可以起到意想不到的作用。InstalledFontCollection用来枚举当前系统已经安装的字体。有人经常问,为什么有些字体系统中已经存在,但使用FontFamily或Font类建立对象时往往失败,如MS Sans Serif、MS Serif等字体。这是因为GDI+只能使用矢量字体,使用InstalledFontCollection枚举一下,便知道哪些字体被GDI+支持。
PrivateFontCollection是用来建立你自己专用的字体集,我觉得这个类很方便,也很实用。有时候,程序中需要使用某些特殊字体,但往往考虑用户系统有可能没安装这些字体,便改变了方案,或者在用户使用说明书中要求用户安装某种字体,否则将达不到某种效果,甚至程序不能正常运行等。那么,这时候使用PrivateFontCollection,是你最好的选择方案之一。程序发布时,将字体文件打包进去,在需要用到这些字体时,程序自动安装字体到你的专用字体集(不会影响操作系统),供你使用。
下面的Delphi例子程序演示了InstalledFontCollection和PrivateFontCollection的使用,再次提醒,例子中使用的Gdiplus单元是本人自己改写的,与网上流通的不完全兼容,需要稍作改动才行(不能使用Wndows字体系统目录做测试,在对话框点击该目录字体,只是重新安装,不能打开。可以将字符文件拷贝到其它目录)。
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 95%; padding-top: 4px;">http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifunitFCMain;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifinterface
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifuses
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifDialogs,StdCtrls,ExtCtrls,Gdiplus;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giftype
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifTMainForm=class(TForm)
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifLabel1:TLabel;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifLabel2:TLabel;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifLabel3:TLabel;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPaintBox1:TPaintBox;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifListBox1:TListBox;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifListBox2:TListBox;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifButton1:TButton;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifButton2:TButton;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifOpenDialog1:TOpenDialog;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureFormCreate(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureFormDestroy(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureListBox1Click(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureButton1Click(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureButton2Click(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedurePaintBox1Paint(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprivate
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gifhttp://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif...{Privatedeclarations}
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifSFontCollect,FontCollect:TGpFontCollection;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPFontCollect:TGpPrivateFontCollection;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFontFamily:TGpFontFamily;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifpublic
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gifhttp://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif...{Publicdeclarations}
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifvar
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifMainForm:TMainForm;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifimplementation
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifusesGdipTypes;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gifhttp://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif...{$R*.dfm}
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif//枚举字体集FontCollect的所有字体名到List中
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffunctionEnumFontFamily(List:TStrings;FontCollect:TGpFontCollection):Integer;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifvar
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFamilys:arrayofTGpFontFamily;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifi:Integer;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifResult:=FontCollect.GetFamilyCount;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififResult=0thenExit;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifSetLength(Familys,Result);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifList.Clear;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffori:=0toResult-1do
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFamilys:=TGpFontFamily.Create;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFontCollect.GetFamilies(Familys);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffori:=0toResult-1do
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifList.Add(Familys.GetFamilyName);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFamilys.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif//通过打开文件对话框装入字体文件到专用字体集PFontCollect
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureTMainForm.Button1Click(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifvar
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifi:Integer;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififnotOpenDialog1.ExecutethenExit;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giftry
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffori:=0toOpenDialog1.Files.Count-1do
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPFontCollect.AddFontFile(OpenDialog1.Files);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifEnumFontFamily(ListBox2.Items,PFontCollect);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifexcept
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifonE:EGdiplusExceptiondoShowMessage(e.GdipErrorString);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureTMainForm.Button2Click(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifClose;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureTMainForm.FormCreate(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifSFontCollect:=TGpInstalledFontCollection.Create;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififEnumFontFamily(ListBox1.Items,SFontCollect)>0then
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifListBox1.ItemIndex:=0;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifListBox1Click(ListBox1);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPFontCollect:=TGpPrivateFontCollection.Create;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureTMainForm.FormDestroy(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififAssigned(FontFamily)then
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFontFamily.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPFontCollect.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifSFontCollect.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif//选择系统或者专用字体集的字体名称,建立一个FontFamily供PaintBox1使用
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureTMainForm.ListBox1Click(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififSender=ListBox1thenFontCollect:=SFontCollect
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifelseFontCollect:=PFontCollect;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififAssigned(FontFamily)thenFontFamily.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifwithSenderasTListBoxdo
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFontFamily:=TGpFontFamily.Create(Items,FontCollect);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPaintBox1.Invalidate;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif//在PaintBox1显示字体来源及对各种风格的支持
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifprocedureTMainForm.PaintBox1Paint(Sender:TObject);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifconst
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifStyleStr:array[0..4]ofstring=
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif('Regular','Bold','Italic','Underline','StrikeOut');
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifvar
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifI:Integer;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifstyle:TFontStyles;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifg:TGpGraphics;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffont:TGpFont;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFontName,s:string;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififnotAssigned(FontFamily)thenExit;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifstyle:=[];
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifg:=TGpGraphics.Create(PaintBox1.Canvas.Handle);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giftry
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifforI:=0to4do
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififnotFontFamily.IsStyleAvailable(style)then
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifContinue;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifFontName:=FontFamily.GetFamilyName;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffont:=TGpFont.Create(FontName,18,style,utPixel,FontCollect);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giftry
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififI=0then
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifbegin
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gififFontCollect=SFontCollectthen
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifs:=FontName+''+'系统字体集'
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifelse
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifs:=FontName+''+'专用字体集';
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifg.DrawString(s,font,Brushs.Red,0,10);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifg.DrawString(FontName+''+StyleStr,font,Brushs.Blue,0,25*I+40);
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifstyle:=;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffinally
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffont.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.giffinally
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifg.Free;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend;
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifend.
页:
[1]