有時(shí)候我們在WPF程序中設置了圖片的Width和Height,但圖片顯示出來(lái)的寬和高并不是我們預期的效果,這實(shí)際上是由于Image的默認Stretch屬性導致的
Image的Stretch屬性默認為Uniform,這代表圖片會(huì )均勻的變大和縮小,保證了圖片的比例不失調,而往往我們設置的寬和高并不符合圖片的比例,因此顯示效果就
不是我們預期所想,Image的Stretch屬性還可以設置為以下值:
None —— 圖片會(huì )按原始大小顯示
Fill —— 圖片會(huì )按照設置的Width和Height顯示,比例會(huì )失調
UniformToFill —— 圖片會(huì )按照設置的Width和Height顯示,但圖片是均勻變大和縮小的,比例不失調,超出顯示范圍的圖像會(huì )被截掉
但是如果將image放到StackPanel,會(huì )發(fā)現iamge的stretch的fill屬性失效
原因如下:
在WPF中,StackPanel是十分常用的布局元素。然而,該元素和很多其它元素不同,當其內部元素需要的尺寸較大時(shí)(超出StackPanel父元素)的尺寸時(shí),如果沒(méi)有明確限制StackPanel元素的MaxWidth/MaxHeight或者直接賦值Width/Height,那么StackPanel的尺寸會(huì )超出父元素的尺寸。
那既然StackPanel是這樣的,那DockPanel如何呢?直接把StackPanel改成DockPanel,發(fā)現DockPanel的尺寸始終與父元素一樣大,始終不會(huì )超過(guò)父元素。
聯(lián)系客服