當我嘗試在運行時更改CroppedBitmap的SourceRect屬性時,沒有任何反應。沒有錯誤,並且屬性值實際上不會被更改。嘗試在運行時更改CroppedBitmap的SourceRect
我想做精靈動畫。我有一個包含Spritesheet的BitmapSource,它是一個包含精靈不同姿勢網格的單個位圖。然後我有一個CroppedBitmap,它有Spritesheet作爲它的Source,並有一個SourceRect將其中一個姿勢從spritesheet中拉出來。在運行時,當我想要動畫時,我試圖改變CroppedBitmap的SourceRect屬性,從較大的位圖中拉出不同的姿勢;但是,如上所述,新的財產價值根本不存在。這是最奇怪的事情。
這是一些示例XAML:
<UserControl.Resources>
<BitmapImage x:Key="spritesheet" UriSource="Sprites/elf.png"/>
</UserControl.Resources>
<Image>
<Image.Source>
<CroppedBitmap x:Name="image" Source="{StaticResource spritesheet}"
SourceRect="240 640 240 320"/>
</Image.Source>
</Image>
而隱藏代碼試圖做到這一點:
var newRect = new Int32Rect(...);
Debug.WriteLine(" Before: " + image.SourceRect);
Debug.WriteLine("Assigning new value: " + newRect);
image.SourceRect = newRect;
Debug.WriteLine(" After: " + image.SourceRect);
這給了我這調試輸出:
Before: 240,640,240,320
Assigning new value: 240,0,240,320
After: 240,640,240,320
所以它的實際分配新的矩形(Y = 0)進入屬性;沒有例外;但之後,房產價值根本沒有變化(Y仍然是640)。
關於爲什麼發生這種情況以及如何解決它的任何想法?
+1在我拿到之前一年回答我的問題。 :) – chaosTechnician 2010-11-09 21:32:15