调整大小/缩放比例时的失真WPF图像

调整大小/缩放比例时的失真WPF图像

问题描述:

我有一个显示图像的程序,用户可以在窗口中调整图像的大小(例如通过滚动鼠标滚轮)。我使用的RenderTransform缩放图像,像这样:调整大小/缩放比例时的失真WPF图像

<Image x:Name="CurrentImage"> 
    <Image.RenderTransform> 
     <TransformGroup> 
      <TranslateTransform x:Name="Translate" X="0" Y="0"/> 
      <ScaleTransform x:Name="Scale" ScaleX="1" ScaleY="1"/> 
     </TransformGroup> 
    </Image.RenderTransform> 
</Image> 

然后,我只是改变了ScaleXScaleY性能。图像按预期调整大小。

但是,在某些尺度上,图像变得非常扭曲。低于约20%,高于约80%时显示效果良好,但对于其间的分辨率,部分或全部图像失真。见下面的截图。

一对夫妇的其他细节:

  • 2的Windows XP的机器我想这对有同样的腐败,但Windows 7的笔记本电脑并没有表现出这个问题。
  • 我也试过用HeightWidth属性替换RenderTransform,只是缩放图像本身,但没有区别。
  • 并不是所有的图像都有问题,而有些图像有时会在不同的比例因子下进行。较大的图像似乎更差,但我还没有系统地测量。
  • .NET 3.5和.NET 4 RC都显示出这种行为。

有没有人见过这种行为之前,你有什么想法?

在原始大小的20%:

alt text http://maylark.com/Scale20.png

在原始大小的26%:

alt text http://maylark.com/Scale26.png

在原始大小的41%:

alt text http://maylark.com/Scale41.png

在原始大小的64%:

alt text http://maylark.com/Scale64.png

在80%原始尺寸的:

alt text http://maylark.com/Scale80.png

+0

你能告诉我们你正在使用什么.NET框架。改变框架也有限制吗? – 2010-03-10 21:07:48

+0

我正在.NET 3.5中工作,但刚刚尝试过.NET 4 RC,它没有什么区别。 – 2010-03-10 21:21:53

这么多小时的努力找出问题后,我决定只重新开始一个新的Visual Studio解决方案并逐一把组件回去。一切都在新的解决方案中工作,最后我把所有的课程都回来了,一切都还在工作!

原来是建设置:非功能版本被多针对“任何CPU”,但新的解决方案是针对“86”。

显然没有在“任何CPU”的程序在Windows XP x64的图形子系统毛刺,因为无论切换到x86或在Vista/7上运行解决了这个问题。

我在希望,这将节省别人的一段时间张贴了这个。

很多WPF renderingbugs的是由vi造成deo司机,特别是nVidia Quadro卡。你尝试过更新你的驱动程序?

+0

我工作的主要系统确实有Quadro卡,但我也在Matrox卡片机上重现了这个问题。所有有最新的驱动程序可用。到目前为止,我唯一能找到的常见主题是Windows XP和/或DirectX 9c。 – 2010-03-10 22:52:38

尽量消除变量。操作系统,硬件和驱动程序(正如第一个答案中指出的)以及您正在使用的图像格式。你提到并非所有图像都有问题?这些图像格式有什么不同吗?例如。位深度,颜色等 也可以调整图像的其他工具,如IrfanView,并创建相同的问题。这可能有助于指出一个驱动程序问题。

的图像渲染看起来很像图像步幅越来越引擎盖下旋的方式。

+0

谢谢你的帮助。事实证明,这是一个构建设置,显然在某些图形子系统中暴露了一个错误(请参阅我自己的问题答案)。 – 2010-03-11 00:53:22