日前在MSDN論壇遇到有人問到在WPF的Ellipse中使用ImageBrush做為筆刷,並且將ImageBrush套用TranslateTransform的時候,ImageBrush的顯示可能會有問題,所以我就自己動手在Blend裡面也拉了一個小Sample,來看看這個問題到底是怎麼發生的。
日前在MSDN論壇遇到有人問到在WPF的Ellipse中使用ImageBrush做為筆刷,並且將ImageBrush套用TranslateTransform的時候,ImageBrush的顯示可能會有問題,所以我就自己動手在Blend裡面也拉了一個小Sample,來看看這個問題到底是怎麼發生的。
如果我們直接透過Belnd將ImageBrush的TranslateTransform中的X與Y屬性值都設為1的話,會發生下圖的情況:咦!?我只是位移一個Pixel而已,怎麼整張圖都不見啦!?(根據實測,Silverlight也會有類似的情況)
經過檢查透過Blend自動產生的XAML之後,發現原來兇手就是RelativeTransform,但是偏偏Blend裡面預設的Transform都會自動視為RelativeTransform,而ImageBrush如果在RelativeTransform中套用了TranslateTransform的話,就會發生上圖的現象(還真是饒舌)。
那如果就是要在ImageBrush中套用TranslateTransform的解法呢?很簡單,只要讓TranslateTransform獨立於RelativeTransform之外就好啦!!