Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [vb net] formattazione stampa

    Salve, vorrei sapere come é possibile, utilizzando l' overload del metodo drawstring, dare un font diverso a più parti del testo nella stessa pagina. Grazie

  2. #2
    Forse é necessario che mi spieghi meglio:

    sono nell'evento PrintPage che si scatena nel momento in cui viene invocato l'evento print. Qui invoco il metodo e.graphics.drawstring(...) per scrivere il testo con il font, le coordinate etc.. Se a questo punto voglio dare nella stessa riga 2 tipi di font diversi, come faccio? Grazie

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Credo che l'overload non c'entri molto in questo caso.

    Purtroppo sviluppo in Delphi e quindi non sono sicuro di fornire buon codice a livello di VB, tuttavia provo a dettagliare il concetto in modo discorsivo.

    Il metodo Graphics.DrawString, nelle sue tante "salse", accetta come parametro anche il Font da utilizzare per la resa grafica del testo.

    Per modificare il font utilizzato nella scrittura del testo, devi creare un'istanza dell'oggetto Font usando il nome del carattere, la dimensione e gli stili che preferisci, passandolo poi al metodo DrawString che utilizza tale font per la stampa (in questo caso), l'output a video e altro ancora.

    Un esempio per chiarire (non verificato):
    codice:
      Dim arialFont As System.Drawing.Font
      arialFont = New System.Drawing.Font("Arial", 96, FontStyle.Regular)
      e.Graphics.DrawString("testo", arialFont, textBrush, textPosition)
    Ogni volta che desideri cambiare carattere, devi creare un nuovo oggetto Font per passarlo poi come parametro al metodo DrawString. Il Garbage Collector fornito dal framework si occuperà, alla fine del processo, di distruggere gli oggetti creati.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Scusami ma se vai col cursore su drawstring nel codice il tip ti dice:
    Public Overloads Sub Drawstring(...)
    quindi non mi pare proprio che non c'entri niente con l'overload.
    Inoltre non mi sembra che tu abbia risposto alla domanda, infatti quel codice che tu hai proposto lo uso anch'io ma la mia necessità é di dare una formattazione diversa a varie parti della stessa riga.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da stellinaxxx
    quindi non mi pare proprio che non c'entri niente con l'overload.
    L'overload consente al programmatore di creare differenti versioni di un metodo; nel tuo caso, non devi fare l'overload di alcun metodo (è già stato fatto dal creatore della libreria) ma semplicemente utilizzare la versione dello stesso che coincide con l'insieme dei parametri che devi specificare.

    Originariamente inviato da stellinaxxx
    Inoltre non mi sembra che tu abbia risposto alla domanda, infatti quel codice che tu hai proposto lo uso anch'io ma la mia necessità é di dare una formattazione diversa a varie parti della stessa riga.
    La domanda non era espressa molto chiaramente: nel primo messaggio si parla di pagina, poi si parla di riga...

    Ad ogni modo, non esiste un concetto di riga già predefinito, poichè quando si scrive il testo attraverso DrawString si specificano esattamente le coordinate in cui questo deve apparire; pertanto, basta determinare la posizione del testo con il font A, tracciarlo, calcolare la posizione del testo con il font B, creandolo come indicato prima, e tracciare quest'ultimo.

    Se non sbaglio, sei tu a dover definire la posizione del testo, pertanto è sufficiente che tu cambi la coordinata X in modo opportuno, ad esempio, per scrivere il testo col nuovo font spostandolo della giusta misura dalla parte di testo che lo precede.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Anzitutto visto che ho dimenticato di farlo prima ti ringrazio per l'aiuto che mi stai dando.
    Detto concretamente se io ho invocato un metodo Print che a sua volta ha scatenato un evento PrintPage, invocando nel suddetto evento il metodo drawstring, come faccio ad avere la coordinata che mi dice in che punto esatto finisce la prima parte della stringa, in modo da invocare di nuovo il metodo drawstring ma con la coordinata che mi dia come punto iniziale il punto finale della stringa precedente? Spero di essere stata chiara Grazie

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da stellinaxxx
    Detto concretamente se io ho invocato un metodo Print che a sua volta ha scatenato un evento PrintPage, invocando nel suddetto evento il metodo drawstring, come faccio ad avere la coordinata che mi dice in che punto esatto finisce la prima parte della stringa, in modo da invocare di nuovo il metodo drawstring ma con la coordinata che mi dia come punto iniziale il punto finale della stringa precedente?
    La coordinata non ce l'hai...sei tu a doverla definire.

    Hai una parte di codice già scritta per mostrarti quello che intendo?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Cerco di essere più chiara possibile:
    Concentriamoci sull'evento PrintPage che si scatena invocando il metodo Print.
    Nell'ambito di tale evento si "disegna" il testo che si vuole mandare in output:
    e.graphics.drawstring(PrimaParteStringa,ArialFont, x,y)
    e fino a qui tutto bene, adesso voglio scrivere la seconda parte della stringa con un'altro font concatenandola alla prima parte della stringa:
    e.graphics.drawstring(SecondaParteStringa, CourierFont,???,???)
    Insomma come faccio a ricavare il punto esatto in cui la PrimaParteStringa é terminata? Grazie

  9. #9
    Azzardo una possibilità:
    e.graphics.drawstring(SecondaParteStringa,CourierF ont,x,Len(PrimaParteStringa)+y)
    Può essere giusto????

  10. #10
    La possibilità che ho azzardato é una stupidaggine perchè dovrei ricavare la lunghezza in pixel della prima parte della stringa, ma come si fa a ricavare la lunghezza in pixel di una stringa???

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 © 2025 vBulletin Solutions, Inc. All rights reserved.