2008-09-21 4 views
0

Weiß jemand, warum der DropShadowBitmapEffect und der EmbossBitmapEffect nicht auf einem TextBlock (nicht textBOX) in WPF funktionieren? OuterGlow, Blur und Bevel scheinen gut zu funktionieren.DropShadowBitmapEffect funktioniert nicht auf TextBlock


Der transparente Hintergrund Pinsel ist offensichtlich nicht die Antwort, weil Sie können einen Schlagschatten mit einem Null-Hintergrund Pinsel bekommen. Die Standard-Weichheit eines Schlagschattens ist 50% und wenn Sie eine kleine Schrift haben, zerstreut die Weichheit den Schatten zu sehr. Es scheint einen steilen Abfall um die Weichheit von 39% zu geben (an diesem Punkt verschwindet der Schatten mehr oder weniger). Versuchen Sie es auf 0 zu setzen und bewegen Sie sich langsam nach oben, bis Sie eine Zahl finden, die immer noch den Schatten zeigt.


Noch eine weitere Anmerkung: die Weichheit ist definitiv ein Faktor, aber in XAML die gültigen Werte sind wirklich nur von 0 bis 1, aber in Mischung zeigt sie es als Prozentsatz bis zu 100. Also bewusst sein, wenn Sie festgelegt der Wert auf 100 in Xaml, wird es vollständig zerstreut werden.


Der Hintergrund brush = noch transparente Lösung kann Manipulation Standardbild auf sie an den post-gerenderten Pixeln und läuft durch die Suche nach der Prägewirkung

Antwort

2

Bitmap Effekte Arbeit arbeiten. Es sollte nur von der Farbe der Pixel abhängig sein. Ich frage mich, ob ihre Algorithmen nicht gut auf Weiß funktionieren. Versuchen Sie, die Farbe zu ändern, um zu sehen, ob dies einen Effekt hat. Wenn dies der Fall ist, können Sie versuchen, ein schwarzes Feld darunter mit einem darauf gesetzten Schlagschatten zu setzen.

Edit: Die Fragesteller die Antwort gefunden

„Danke für mich in der richtigen allgemeinen Richtung zeigt es nicht die Farbe des Textes oder den Schlagschattens war, was zählte, ist notwendig, was ist den Hintergrund Pinsel zu machen. auf dem TextBlock den Transparenten Pinsel (Alpha = 0) anstelle von null. "

1

Wichtiger Hinweis: Sie sollten BitmapEffects nicht mehr verwenden. Verwenden Sie die Effect-Eigenschaft, die auf ShaderModel-Effekten basiert, die in .net 3.5 SP1 eingeführt wurde, verwendet Hardware-Rendering und hat eine weitaus bessere Leistung.

More Information