在 VCL
中,我可以从资源中加载字体,并在不保存它的情况下直接从内存中使用。
下面是我在 VCL
中使用的代码,它可以正常工作:
procedure TForm1.Button1Click(Sender: TObject);
var
ResStream : tResourceStream;
FontsCount : DWORD;
begin
ResStream := tResourceStream.Create(hInstance, 'MyResourceName', RT_RCDATA);
winapi.windows.AddFontMemResourceEx(ResStream.Memory, ResStream.Size, nil, @FontsCount);
ResStream.Free();
button1.Font.name := 'MySavedFontNameInResource';
end;
在Firemonkey中,我刚刚将button1.Font.name
更改为button1.Font.family
,但不幸的是字体没有改变。所以我认为这段代码与firemonkey不兼容。那么在Firemonkey中,如何从资源中加载字体并将其暂时保存到内存中,并直接从内存中使用它呢?更新:
我看到了这些页面:在Firemonkey中安装字体,如何使用外部字体? 根据Mr Ed的回答,在FMX中似乎没有解决此问题的方法。但是也许如果我们在运行应用程序之前先安装字体,就可以加载字体。我几乎尝试了一切,但仍然无法加载字体。
VCL
和FMX
中,该函数返回true
。我不知道但我觉得FontsCount: integer;
有问题。我把integer
改成了DWORD
但是没有任何变化(http://msdn.microsoft.com/en-us/library/windows/desktop/dd183325(v=vs.85).aspx) - Sky