2009-02-13 70 views
22

Tôi muốn tải và sử dụng phông chữ cho ứng dụng máy tính để bàn trong C#. Đó là có thể mà không cần cài đặt phông chữ trên hệ thống?Tải phông chữ từ tập tin trên ứng dụng C#

Đó là một loại câu hỏi như this nhưng không phải từ một DLL. Tôi muốn tải từ tập tin phông chữ.

Trả lời

23

Có một lớp System.Drawing.Text.PrivateFontCollection trong System.Drawing.dll có thể quản lý phông chữ trên cơ sở ứng dụng.

Tất cả những gì bạn làm là bạn duy trì bộ sưu tập này trong ứng dụng của mình và bạn thêm phông chữ thông qua AddFontFile hoặc AddMemoryFont và sau đó bạn sẽ có thể sử dụng phông chữ như thể nó được cài đặt trên hệ thống của bạn.

Giống như cài đặt phông chữ cho ứng dụng mà thôi. Phông chữ sẽ được gỡ cài đặt sau khi quá trình chấm dứt.

+2

Tôi nghĩ bạn phải giữ một bộ sưu tập phông chữ riêng để không thu thập rác. Tôi tiếp tục nhận được một ngoại lệ khi tôi cố gắng vẽ bằng cách sử dụng một đối tượng Font tôi xây dựng bằng cách sử dụng dữ liệu từ bộ sưu tập phông chữ của tôi. Tôi đã tìm ra một khi tôi đã có phông chữ của tôi, tôi đã không quan tâm đến bộ sưu tập, phải không? Rõ ràng là không. Chỉ cần giữ một tham chiếu đến bộ sưu tập phông chữ miễn là bạn cần phông chữ. Điều đó làm việc cho tôi ít nhất. –

+0

Ah, tinh tế, nhưng đúng, tôi đoán trình bao bọc GDI + sẽ không theo dõi các phông chữ đó cho bạn, nó được thu thập trong khi GDI + có tham chiếu đến các phông chữ đó trong nội bộ, và tự nhiên nó không có cách nào để biết rằng các chốt xử lý hiện không hợp lệ/được phát hành . Mặt sau của Win32 introp. –

+0

Ngoài ra, PrivateFontCollection cũng sẽ được xử lý khi bạn hoàn thành nó! – Peter

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