Visualizzazione dei risultati da 1 a 4 su 4

Discussione: C++ CreateFont

  1. #1

    C++ CreateFont

    Ciao a tutti,
    io ho un programma che legge vari parametri di un file che poi dovranno essere interpretati per poi essere stampati.

    Nel file possono essere presenti vari oggetti grafici; ad es. rettangoli, linee e testi.
    Il mio problema riguarda il testo.

    Nel file viene indicato il font di default da utilizzare e viene scritto nel seguente modo:
    DefFont={(0,0,0),24,-32,0,0,0,400,0,0,0,0,3,2,1,34,Arial}
    I primi 3 campi corrispondono al colore. Il resto dovrebbe essere il font.
    Ho utilizzato la struttura LOGFONT, quello che non mi torna è il campo lfHeight , dovrebbe corrispondere alla dimensione del carattere, ma non riesco a capire il calcolo che viene effettuato per ottenere il valore -32.

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    lfHeightThe height, in logical units, of the font's character cell or character. The character height value (also known as the em height) is the character cell height value minus the internal-leading value. The font mapper interprets the value specified in lfHeight in the following manner.
    Value Meaning
    > 0 The font mapper transforms this value into device units and matches it against the cell height of the available fonts.
    0 The font mapper uses a default height value when it searches for a match.
    < 0 The font mapper transforms this value into device units and matches its absolute value against the character height of the available fonts.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    questo lo avevo trovato su MSDN ma non ci ho capito molto...
    Perchè se stampo indicando 24 come faccio a trovare -32 ? che calcolo fa?
    Nel dettaglio io nel file che leggo trovo

    DefFont={(0,0,0),24,-32,0,0,0,400,0,0,0,0,3,2,1,34,Arial}

    e quando utilizzo il mio codice per mandare in stampa uso

    hFont = CreateFont(??,??, 0, 0,FW_BOLD, FALSE, TRUE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
    //CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN,TEXT("Times New Roman"));

    I primi due parametri che io ho indicato con ?? cosa dovrei passare? che algoritmo usare?

  4. #4
    Ok ,
    dopo aver fatto diverse prove ho trovato la soluzione del calcolo...
    praticamente se scelgo il carattere 20 nella CreateFont come parametro passerò il valore dato dal seguente calcolo:
    -(dimensione carattere * (GetDeviceCaps(hdcPrint,LOGPIXELSY) )/72;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.