2010-03-10 238 views
1

我有一個顯示圖像的程序,用戶可以在窗口中調整圖像的大小(例如通過滾動鼠標滾輪)。我使用的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

回答

2

這麼多小時的努力找出問題後,我決定只重新開始一個新的Visual Studio解決方案並逐一把組件回去。一切都在新的解決方案中工作,最後我把所有的課程都回來了,一切都還在工作!

原來是建設置:非功能版本被多針對「任何CPU」,但新的解決方案是針對「86」。

顯然沒有在「任何CPU」的程序在Windows XP x64的圖形子系統毛刺,因爲無論切換到x86或在Vista/7上運行解決了這個問題。

我在希望,這將節省別人的一段時間張貼了這個。

0

很多WPF renderingbugs的是由vi造成deo司機,特別是nVidia Quadro卡。你嘗試過更新你的驅動程序?

+0

我工作的主要系統確實有Quadro卡,但我也在Matrox卡片機上重現了這個問題。所有有最新的驅動程序可用。到目前爲止,我唯一能找到的常見主題是Windows XP和/或DirectX 9c。 – 2010-03-10 22:52:38

0

儘量消除變量。操作系統,硬件和驅動程序(正如第一個答案中指出的)以及您正在使用的圖像格式。你提到並非所有圖像都有問題?這些圖像格式有什麼不同嗎?例如。位深度,顏色等 也可以調整圖像的其他工具,如IrfanView,並創建相同的問題。這可能有助於指出一個驅動程序問題。

的圖像渲染看起來很像圖像步幅越來越引擎蓋下旋的方式。

+0

謝謝你的幫助。事實證明,這是一個構建設置,顯然在某些圖形子系統中暴露了一個錯誤(請參閱我自己的問題答案)。 – 2010-03-11 00:53:22