Лучший способ сделать это - использовать эффект шейдера. Я пытался сделать это с помощью встроенного эффекта размытия, но, похоже, они не сочетаются с альфой.
Ниже приведен пример того, как я начал бы, и я не представляю конечный продукт. Эффект границы HLSL, основанный на эффекте тиснения.
Просмотр полного изображения для лучшего понимания. Этот эффект добавляет только границу размером 2 пикселя, поэтому при масштабировании он выглядит еще хуже.
Я довольно плохо пишу HLSL, код справа просто скопирован из http://brooknovak.wordpress.com/2008/09/16/simple-image-filters-written-as-hlsl-pixel-shaders/ с модификацией.
Я уверен, что кто-то, кто знал HLSL / GLSL, мог бы написать эффект размытия, который работает правильно. Обратите внимание, что этот эффект работает для всего изображения и, следовательно, должен знать размер изображения. Вы должны поместить их в постоянный буфер и использовать их вместо жестко заданных 500.0 для ширины и высоты. Они должны быть шириной / высотой отображаемого объекта. В моем примере это фактически вся левая половина окна, а не только размер текста, потому что мой XAML выглядит следующим образом ...
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded" Background="Transparent">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="264*" />
<ColumnDefinition Width="239*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="218*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="The quick brown fox jumped over the lazy dog." Foreground="White" Background="Transparent" Grid.RowSpan="3" x:Name="PART_TextBlock"/>
<TextBox x:Name="PART_TextBox" Grid.Column="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Visible" AcceptsReturn="True" AcceptsTab="True" />
<TextBlock x:Name="PART_Error" Grid.Column="1" Grid.Row="1"/>
<Button Content="Compile & Apply" Grid.Column="1" Grid.Row="2" Padding="4,1" Margin="4" HorizontalAlignment="Center" Click="Button_Click" />
</Grid>
</Window>