2009-02-01 9 views

Respuesta

7

Si quiere que luzca perfecto, tendrá que dibujar el texto dos veces.

Como puede ver al acercar las etiquetas debajo de los elementos de la barra de herramientas en cualquier aplicación, o por ejemplo la barra de marcadores en Safari (Control + desplazamiento, control + opción + \ para alisar la imagen ampliada), el texto se procesa con anti-aliasing sub-píxel, al menos cuando "Estilo de suavizado de fuente:" en las preferencias del sistema "Apariencia" se establece en medio, que será por defecto en Mac con un panel plano de Apple incorporado o externo monitor.

NSShadow no se puede utilizar con anti-aliasing sub-pixel, por lo que si simplemente configura un NSShadowAttributeName en el diccionario de atributos con el que está dibujando su cadena, notará que el anti-aliasing sub-pixel es MIA cuando se acerca en su texto representado. Debido a la forma en que está diseñada NSShadow, no importa de qué color establezca su instancia NSShadow, incluso si es opaca, siempre se dibujará con un canal alfa, lo que imposibilita el antialiasing subpíxel.

La solución es realmente muy simple:

  1. Dibuje su texto una vez con un color blanco con un poco de máxima transparencia,
  2. A continuación, dibuje una vez más por encima de eso, un píxel superior en un tono de gris de su agrado sin transparencia.

su 'sombra' atraerá sin suavizado de subpíxeles, pero el texto real en la parte superior op de dibujará con ella, que le da exactamente el mismo efecto como etiquetas de elementos botón de la barra de cacao estándar o elementos en el Barra de marcadores de Safari.

EDITAR: Parece que los elementos de la barra de marcadores de Safari también dibujan sus 'sombras' con precisión subpíxel, por lo que la forma en que lo hicieron probablemente sea eligiendo un tono opaco de gris para el texto 'sombra' blanco ; inconveniente de ese enfoque: está atando su código de dibujo para que solo funcione bien en un color de fondo particular, p. si sus elementos se usarán sobre un fondo azul, querrá establecer ese color a un tono azul claro, para que parezca blanco semitransparente.

3

Dibuje con una sombra debajo de él. Use una sombra con color blanco, opacidad 50% o menos, desenfoque 0, desplazamiento 1 pt hacia abajo.

Una forma simple de hacerlo es simplemente dibujar el texto dos veces. La primera vez, la dibuja 1 pt más abajo, en blanco, al 50% de opacidad. La segunda vez, la dibuja en la posición deseada, en el color deseado, a la opacidad deseada (probablemente 100%).

Cuestiones relacionadas