Pergunta

Eu tenho um aplicativo Win32 GUI que usa o GDI havily. Ele precisa desenhar texto ao longo de um bitmap em coordenadas especificadas e depois apagá-lo e substituir com o bitmap original.

I faça o seguinte:

  • selecione fonte (GetStockObject (DEFAULT_GUI_FONT)), escova, outras coisas no contexto de dispositivo
  • chamar GetTextExtentPoint32 () para calcular o tamanho do texto
  • tendo agora o texto ponto de partida que eu posso calcular o retângulo texto esperado e armazená-lo
  • chamar TextOut () para o mesmo contexto dispositivo com o mesmo ponto de partida e o mesmo texto

e mais tarde restaurar o bitmap para o retângulo loja.

Ele funciona muito bem quando ClearType suavização está desligado. Mas com ClearType do tamanho retornado por GetTextExtentPoint32 () é ligeiramente menor do que o tamanho realmente ocupado pelo texto quando TextOut () é chamado. Então, quando eu mais tarde restaurar o bitmap original algumas pequenas listras do texto permanecer no local e eu tenho artefatos.

Existe alguma cura para esse sem desativar ClearType?

Foi útil?

Solução

Você também pode tentar DrawText com DT_CALCRECT para calcular o tamanho string. Talvez ele funciona melhor.

Além disso, você pode então escrever a corda com DrawText dentro de um retângulo com os tamanhos igual ao que você começa com DT_CALCRECT e vai cortar o texto no caso, é um pouco maior.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top