示例代码如下:
Buffer: TBitmap32;
begin
if GetObject(Buffer.Font.Handle, ...) then
...
hf:= CreateFontIndirect(...);
if hf <>0 then
begin
Buffer.font.Handle:= hf;
Buffer.TextOut(...);
Buffer.Font.Handle := 0;
DeleteObject(hf)
end;
这里要注意,Font.SetHandle会触发ResourceManager释放上一个字体资源,ResourceManager调用DeleteObject。所以,在这里,外部再次调用DeleteObject是没有意义的