Uso QPainter::setRenderHint(QPainter::Antialiasing, true)
para decirle a Qt que quiero que sea antialias para cualquier dibujo que haga (en este caso, texto dibujado con drawText()
).QPainter :: rotar deshabilita el antialiasing de texto dibujado
Esto funciona bien y el texto se ve bien, hasta que quiera rotar el mapa de píxeles al que estoy dibujando, p.
Painter.translate(0, height());
Painter.rotate(-90);
(para girar la QPainter 90 grados hacia la izquierda y traerlo de vuelta a la vista)
La llamada a rotate()
parece desactivar el antialiasing para cualquier texto dibujado - el texto se dibuja en la rotación correcta pero sin antialiasing . Otras cosas parecen no verse afectadas, p. drawLine()
todavía dibuja una línea muy antialiased.
¿Alguna idea de lo que estoy haciendo mal?
EDITAR: Como era de esperar, agregar el texto a una ruta y luego completar esa ruta me da texto rotatorio antialias. Preferiría evitar esta ruta si fuera posible.
EDITAR (otra vez): He intentado usar QFont::setStyleStrategy(QFont::PreferAntialias)
en la fuente que estoy usando, sin ningún efecto. Sin embargo, algunos experimentos más muestran que una fuente básica como Arial todavía producirá texto antialias cuando se gira, mientras que mi fuente personalizada (Swiss721 BlkCn BT para cualquiera que esté interesado) no lo hará. Además, aunque este problema existe en Windows 7, no tengo el mismo problema cuando se ejecuta en Ubuntu. This FAQ article parecería sugerir que Qt busca que el sistema operativo host maneje el antialiasing de fuentes, entonces, ¿qué tipo de problemas podría tener Windows al manejar el renderizado de esta fuente en particular (que es un TrueType, como Arial)?
EDITAR (última vez, lo prometo): aumentar el tamaño de la fuente a 16pt o superior elimina el problema. Parecería que el problema es con la representación de mi fuente en particular por debajo de 16 puntos - tal vez algo que ver con lo que se menciona en el artículo de blog anterior ?:
En fuentes de Windows 2000 son por lo general no antialiased dentro de un cierto rango (por ejemplo tamaños 8-16) para hacer que el texto sea más nítido y legible.
Creo que pude haber respondido mi propia pregunta aquí, pero si alguien tiene más información o información relacionada, todavía estaría muy interesado. – sjwarner