2012-02-28 33 views
5

Triển khai ứng dụng C# .NET, các phần tử GUI của chúng tôi sử dụng phông chữ "Arial" (đó là mặc định trong Visual Studio GUI designer).Phông chữ không tồn tại và treo ứng dụng .NET, cần kiểm tra hoặc cài đặt phông chữ

Một khách hàng cụ thể mà chúng tôi đang làm việc vì một lý do nào đó không cài đặt phông chữ Arial (họ phải xóa nó theo cách thủ công, vì theo tôi biết nó được mặc định với tất cả cài đặt Windows).

Điều này dẫn đến sự cố ngoại lệ/ứng dụng.

Có cách nào để đảm bảo phông chữ tồn tại với C# và/hoặc tự động cài đặt phông chữ nếu không?

Trả lời

0

Nhúng phông chữ làm tài nguyên và kiểm tra/cài đặt nó trước khi bạn hiển thị bất kỳ phần tử giao diện người dùng nào.

4

Bạn cần phải nhúng font như một nguồn lực và sau đó làm điều gì đó tương tự như sau:

[DllImport("gdi32", EntryPoint = "AddFontResource")] 
public static extern int AddFontResourceA(string lpFileName); 

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 

    List<FontFamily> fontsFamilies = new List<FontFamily>(FontFamily.Families); 
    if (!fontsFamilies.Exists(f => f.Name.Equals("Arial"))) 
    { 
     //Save the font from resource here.... 


     //Install the font 
     int result = AddFontResourceA(@"C:\MY_FONT_LOCATION\Arial.TTF"); 
    } 

    Application.Run(new Form1()); 
} 
+0

Nice! Bạn có các chi tiết bổ sung về cách cài đặt phông chữ từ tài nguyên được nhúng không? (Ngoài Google, tôi cũng tìm kiếm ...) –

+0

Tôi đã sửa đổi mã. –

Các vấn đề liên quan