2009-02-13 8 views

risposta

23

Esiste una classe System.Drawing.Text.PrivateFontCollection in System.Drawing.dll che può gestire i tipi di carattere per applicazione.

Tutto ciò che fai è mantenere questa raccolta all'interno della tua app e aggiungere font con AddFontFile o AddMemoryFont e potrai quindi utilizzare quel font come se fosse stato installato sul tuo sistema.

È come installare il font solo per l'applicazione. Il font verrà disinstallato una volta terminato il processo.

+2

Penso che sia necessario mantenere una sospensione della raccolta di font privata in modo che non venga raccolta la garbage collection. Ho continuato a ottenere un'eccezione quando ho provato a disegnare utilizzando un oggetto Font che ho creato utilizzando i dati della mia collezione di font. Ho pensato che una volta avuto il mio carattere non mi importava della collezione, giusto? Apparentemente no. Tieni semplicemente un riferimento alla raccolta dei font finché hai bisogno del font. Questo ha funzionato almeno per me. –

+0

Ah, sottile, ma vero, suppongo che il wrapper GDI + non tenga traccia di quei font per te, viene raccolto mentre GDI + ha riferimenti a quei font internamente, e naturalmente non ha modo di sapere che gli handle ora non sono validi/rilasciati . Il lato posteriore dell'intropiatura di Win32. –

+0

Anche PrivateFontCollection deve essere smaltito quando hai finito! – Peter

Problemi correlati