PatkIllA
2011-08-03, 20:12:37
Ich habe eine WPF Anwendung in der eine Karte dargestellt wird. Die Karte kann optional in Graustufen dargestellt werden, was mit einem ShaderEffect passiert. Zusätzlich kann in der Karte gezommt werden. Die Vorschau passiert dabei mit einer Matrix in der Rendertransform-Eigenschaft.
Das Problem ist jetzt, dass wenn der ShaderEffect aktiviert ist und gezommt wird, wird ab einem gewissen ZoomFaktor das Bild verzerrt oder Ausschnitt stimmt nicht mehr.
Ich habe es bislang nur unter Windows 7 getestet. Interessant ist, dass der Wert ab dem das passiert auf der NVIDIA Quadro auf der Arbeit und meiner privaten ATI unterschiedlich ist.
Ich habe das ganze mal auf das nötigste gestützt hochgeladen:
http://patkilla.wildstallyons.de/public/ShaderTransformTest.rar
Vereinfacht sieht das so aus, aber interactiv sieht man das erst richtig.
<Window x:Class="ShaderTransformTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ShaderTransformTest"
Title="MainWindow" Height="350" Width="525">
<Canvas Grid.Row="1" Width="1672" Height="800" ClipToBounds="True">
<FrameworkElement.CacheMode>
<BitmapCache />
</FrameworkElement.CacheMode>
<FrameworkElement.Effect>
<local:GrayScaleEffect/>
</FrameworkElement.Effect>
<FrameworkElement.RenderTransform>
<ScaleTransform ScaleX="12" ScaleY="12" />
</FrameworkElement.RenderTransform>
<Image Source="map.png" UseLayoutRounding="True"/>
<TextBlock Text="MyTextBlock" Foreground="Lime" FontSize="64"/>
</Canvas>
</Window>
Das Problem ist jetzt, dass wenn der ShaderEffect aktiviert ist und gezommt wird, wird ab einem gewissen ZoomFaktor das Bild verzerrt oder Ausschnitt stimmt nicht mehr.
Ich habe es bislang nur unter Windows 7 getestet. Interessant ist, dass der Wert ab dem das passiert auf der NVIDIA Quadro auf der Arbeit und meiner privaten ATI unterschiedlich ist.
Ich habe das ganze mal auf das nötigste gestützt hochgeladen:
http://patkilla.wildstallyons.de/public/ShaderTransformTest.rar
Vereinfacht sieht das so aus, aber interactiv sieht man das erst richtig.
<Window x:Class="ShaderTransformTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ShaderTransformTest"
Title="MainWindow" Height="350" Width="525">
<Canvas Grid.Row="1" Width="1672" Height="800" ClipToBounds="True">
<FrameworkElement.CacheMode>
<BitmapCache />
</FrameworkElement.CacheMode>
<FrameworkElement.Effect>
<local:GrayScaleEffect/>
</FrameworkElement.Effect>
<FrameworkElement.RenderTransform>
<ScaleTransform ScaleX="12" ScaleY="12" />
</FrameworkElement.RenderTransform>
<Image Source="map.png" UseLayoutRounding="True"/>
<TextBlock Text="MyTextBlock" Foreground="Lime" FontSize="64"/>
</Canvas>
</Window>