2009-03-30 16 views
1

Wir haben eine Silverlight-Anwendung, die Text über Video zeigt. Sowohl der Text als auch das Video können als Variablen betrachtet werden. Manchmal haben wir ein dunkles Video, manchmal ein helles Video, manchmal ein Video, das Abschnitte von beiden hat.Stellen Sie sicher, dass Text immer in Silverlight lesbar ist

Denken Sie an Credits am Ende eines Films. Wir möchten sicherstellen, dass der Endbenutzer den Text, der über das Video gezeigt wird, immer lesen kann. Der Text ist immer eine Überlagerung über dem Video.

Die einfache Lösung ist, zwei den Text einmal zweimal in weiß und einmal in schwarz mit einem kleinen Offset zu zeigen. Das funktioniert fast, sieht aber ein wenig rau aus und nimmt dem Benutzer etwas ab.

Idealerweise hätten wir den Text mit leichtem halbtransparenten Glanz an den Rändern. Wenn der Text also weiß wäre, würde es direkt an den Rändern schwarz leuchten.

Gibt es eine Möglichkeit, dies zu tun? Oder gibt es einen gleichwertigen oder besseren Workaround?

Antwort

1

Ich habe dies mit dem DropShadow-Pixel-Shader-Effekt in Silverlight 3 getan. Es funktioniert gut, aber da die Pixel-Shader nicht auf der Hardware ausgeführt werden, kann es einen ziemlich großen Einfluss auf die Leistung der Anwendung haben.

Wenn Sie ehrgeizig werden wollten, könnten Sie Ihren eigenen Pixelshader schreiben. Silverlight 3 unterstützt HLSL-Shader.

1

Sie könnten versuchen, es mit einem kontrastierenden Umriss anzuzeigen, anstatt nur einen "Schlagschatten" wie Sie erhalten, wenn Sie es einmal mit einem kleinen Versatz anzeigen. Um dies zu tun, zeigen Sie es vier Mal in einer Farbe und dann ein fünftes Mal mit einer Kontrastfarbe an, die auf die vier vorherigen Kopien zentriert ist. Die vier ersten sollten um ein Pixel nach oben, rechts, unten und links vom Zentrum versetzt sein.

Der Nettoeffekt sollte ein Umriss sein. Natürlich sieht das vielleicht auch "grob" aus, da es computergeneriert ist und daher nicht perfekt in Bezug auf Kerning, Abstand zwischen Zeichen usw. ist. Aber es ist schnell, zumindest zu versuchen.

Im Allgemeinen ist es schwierig, automatisch gute Kontrastfarben zu finden, wenn der Hintergrund ein Video ist. Im schlimmsten Fall enthält das Video genau den Text, den Sie anzeigen möchten. Die richtige Lösung ist in diesem Fall schwer vorstellbar.

+0

Danke, der 4-Richtungsschatten hat auch die Rauheit. Ich denke, es braucht entweder den Glow-Effekt oder eine Anti-Aliasing-Korrektur. Weiß jemand, ob Silverlight 3.0 Bitmap-Pixel-Shader diese beiden Möglichkeiten nutzen können? –

1

Klingt ähnlich wie das Problem der Gewährleistung von Untertiteln sind immer in Filmen/TV lesbar. Die robusteste, aber nicht unbedingt eleganteste Lösung besteht darin, ein farbiges Hintergrundrechteck für den Text zu haben, das entweder undurchsichtig ist oder einen niedrigen Transparenzwert hat - oft grau oder schwarz mit einer gut kontrastierenden Vordergrundfarbe.

+0

Sie haben recht, das würde funktionieren. Das würde viel von der Benutzerfreundlichkeit für diese Anwendung wegnehmen. Wir würden wahrscheinlich so gehen wie es ist, wenn das nur Option ist. –

Verwandte Themen