Domanda

Ho un'applicazione di Win32 GUI che utilizza GDI havily. Ha bisogno di disegnare il testo su una bitmap a coordinate specificate e poi cancellarlo e sostituirlo con il bitmap originale.

I procedere nel seguente modo:

  • Seleziona carattere (GetStockObject (DEFAULT_GUI_FONT)), pennello, altre cose nel contesto di periferica
  • chiamare GetTextExtentPoint32 () per calcolare la dimensione del testo
  • la società, il cui punto di partenza del testo che posso calcolare il rettangolo di testo previsto e conservarla
  • chiamare TextOut () per lo stesso contesto dispositivo con lo stesso punto di partenza e lo stesso testo

e poi ripristinare il bitmap per il negozio di rettangolo.

Funziona bene quando ClearType antialiasing è spento. Ma con ClearType dalla dimensione restituita da GetTextExtentPoint32 () è leggermente inferiore alla dimensione effettivamente occupata dal testo quando TextOut () viene chiamato. Così, quando ho seguito ripristinare il bitmap originale alcune piccole strisce del testo rimanere al suo posto e non ho artefatti.

C'è una cura per questo senza disabilitare ClearType?

È stato utile?

Soluzione

Si potrebbe anche provare DrawText con DT_CALCRECT per calcolare la dimensione della stringa. Forse funziona meglio.

Inoltre è possibile quindi scrivere la stringa con DrawText all'interno di un rettangolo con le dimensioni pari a quella che si ottiene con DT_CALCRECT e sarà agganciare il testo in caso si tratta di un po 'più grande.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top