Importare font esterni senza installarli VB.NET

« Older   Newer »
 
  Share  
.
  1. JS96
        +4    
     
    .

    User deleted


    Importare font esterni senza installarli VB.NET
    Guida by JS96 (Jakub Steplowski)



    > Introduzione

    Vi sarà capitato molte volte di voler utilizzare un font all'interno del vostro progetto diverso da quelli che ci vengono offerti di default da Visual Studio.
    Certamente abbiamo la possibilità di selezionare uno dei font installati sul nostro PC, ma sappiamo perfettamente che stiamo correndo il rischio di rilasciare un software che provato da un utente su un altro PC viene visualizzato in modo completamente diverso e indesiderato.
    Una delle soluzioni che vedo più spesso è quella di allegare all'eseguibile il font in formato ".ttf" (TrueType), in modo che l'utente lo installi prima di avviare il nostro capolavoro.
    Chiaramente questa non è una soluzione professionale e nemmeno quella più comoda (immaginate di aver usato più font).

    La soluzione che vi voglio mostrare è molto semplice.


    > Requisiti

    • Visual Studio o Visual Basic Express

    • Conoscenza base di VB.NET

    • Il font che ci interessa in formato ".ttf"


    > Procedimento

    Aprite il vostro progetto Windows Form.
    La prima cosa da fare è importare il font (in formato "ttf", tutti gli altri formati non sono supportati) nelle risorse del progetto.
    Per farlo andiamo nel menù in alto in "Progetto" -> "Proprietà di Nome del vostro Progetto".



    Successivamente clickiamo su "Risorse".



    Clicckiamo sulla freccia accanto ad "Aggiungi risorsa" e subito dopo "Aggiungi file esistente..."



    Nella finestra che si aprirà selezioniamo il font che vogliamo aggiungere.
    Una volta aggiunto lo vedremo tra i "File" nelle "Risorse".



    Non ci resta che passare alla codifica.
    Nel codice del form in cui vogliamo usare il font importiamo le seguenti classi:

    CODICE
    Imports System.Drawing.Text
    Imports System.Runtime.InteropServices


    Dopodichè aggiungiamo il seguente codice (modificate "NomeFont"):



    Come ultimo passaggio cambiamo il font ai componenti che desideriamo (lo potete inserire sia in "Form1_load" sia in un evento qualsiasi di un componente):

    CODICE
    'Il primo parametro passato e' la dimensione del font, "12", il secondo lo stile, "Regular" (possiamo inserire anche "Bold", "Italic", ecc.)
    Label1.Font = CreaIstanza(12, FontStyle.Regular)

    E' consigliato impostare durante la creazione visuale del form dei font che sicuramente funzioneranno.
    Infatti se dovesse verificarsi qualche errore il font non verrà caricato, quindi selezionate per esempio "Calibri" e successivamente via codice lo andrete a modificare.

    Ecco il risultato che possiamo ottenere (esempio):



    A sinistra vediamo "Calibri" (impostato durante la creazione visuale), a destra "Segoe UI" (caricato in runtime). :D

    Se qualcosa non vi è chiaro o avete trovato qualche errore non esitate a dirlo qui sotto.
    Spero vi sia utile! :D


    Guida creata da: JS96 (Jakub Steplowski)
    Esclusivamente per: Syra Community

    Se volete copiarla, inserite la fonte!

    Edited by JS96 - 18/1/2015, 18:18
     
    .
  2. milo5
        +1    
     
    .

    User deleted


    ciao, quando assegno il font ad un'oggetto mi dice che la funzione CustoFont non esiste. ti sei dimenticto di dire di inserire tutto il codice in un Module CustomFont
     
    .
  3. JS96
         
     
    .

    User deleted


    CITAZIONE (milo5 @ 16/1/2015, 16:43) 
    ciao, quando assegno il font ad un'oggetto mi dice che la funzione CustoFont non esiste. ti sei dimenticto di dire di inserire tutto il codice in un Module CustomFont

    In realtà non è necessario inserirlo dentro un nuovo modulo.
    Basta che incolli il codice dentro la classe del form.
     
    .
  4. JS96
         
     
    .

    User deleted


    CITAZIONE (milo5 @ 16/1/2015, 16:43) 
    ciao, quando assegno il font ad un'oggetto mi dice che la funzione CustoFont non esiste. ti sei dimenticto di dire di inserire tutto il codice in un Module CustomFont

    Ops.
    Mi devo correggere, hai ragione.
    Ho sbagliato a scrivere.

    Questo:
    CODICE
    Label1.Font = CustomFont.CreaIstanza(12, FontStyle.Regular)


    Diventa:
    CODICE
    Label1.Font = CreaIstanza(12, FontStyle.Regular)


    Grazie per la segnalazione! :D
     
    .
  5. Antonella Di Gioia
        +1    
     
    .

    User deleted


    Ok Il classico codice funziona solo con il rendering del testo che supporta l'Uso del CompatibleTextRendering, quindi un label, per il resto degli oggetti (RichTextBox, Textbox, TabControl..Etc) se non crei un modulo di installazione del font direttamente in c-windows.Fonts. qualsiasi font personale non verrà visualizzato ed utilizzato nel form. ;)
     
    .
  6. JS96
         
     
    .

    User deleted


    CITAZIONE (Antonella Di Gioia @ 16/10/2017, 11:26) 
    Ok Il classico codice funziona solo con il rendering del testo che supporta l'Uso del CompatibleTextRendering, quindi un label, per il resto degli oggetti (RichTextBox, Textbox, TabControl..Etc) se non crei un modulo di installazione del font direttamente in c-windows.Fonts. qualsiasi font personale non verrà visualizzato ed utilizzato nel form. ;)

    Giusta osservazione. :)
    Ammetto che non me n'ero accorto all'epoca.
    Utilizzavo font abbastanza simili a quelli di default, per cui non ci ho mai fatto caso che non venisse renderizzato quello giusto nelle Textbox.
     
    .
  7. Valerio Baldini
         
     
    .

    User deleted


    Buona sera e scusa, ma il codice dove è che non vedo nulla.

    Dopodichè aggiungiamo il seguente codice (modificate "NomeFont"):
    pagina tutta nera e poi
    Come ultimo passaggio ........
     
    .
6 replies since 22/8/2014, 00:03   1099 views
  Share  
.
Top