[C#] 讀取字型檔案,但是不會被鎖住
2016-07-15
最近在在處理圖形問題,需求是必須要合成Barcode,這點不困難,只需要下載barcode 字型檔.ttf 就可以了,但是讀取後拿來畫在bitmap上面,之後那ttf檔案就被系統鎖起來,刪都刪不掉,即使我dispose 一堆東西也一樣,後來網路上查到一些作法,乾脆整理成一個function 之後就讀取.ttf 變成Font 物件,而且不會被系統lock住
private static Font GetFontFromFileWithoutLock(float size,string fontPath)
{
var fontBytes = System.IO.File.ReadAllBytes(fontPath);
//讀到記憶體中
var fontBuffer = Marshal.AllocHGlobal(fontBytes.Length);
Marshal.Copy(fontBytes, 0, fontBuffer, fontBytes.Length);
PrivateFontCollection privateFont = new PrivateFontCollection();
//從記憶體取得
privateFont.AddMemoryFont(fontBuffer, fontBytes.Length);
var res = new Font(privateFont.Families[0], size);
privateFont.Dispose();
return res;
}
很簡單,給需要的人