我有一個包含圖像的網格。當圖像離開網格時獲取圖像的縮放因子
<Grid Name="grid1">
<Image Name="image1" Stretch="None" Source="C:\Users\User\Desktop\image.jpg"/>
</Grid>
如果圖像的大小大於網格的大小,我想通過渲染變換手動縮放以適合網格。我不想使用Stretch =「Fill」,因爲我需要比例因子。 有什麼方法可以檢測到UIElement出現的情況嗎? 我需要你的幫助。
我有一個包含圖像的網格。當圖像離開網格時獲取圖像的縮放因子
<Grid Name="grid1">
<Image Name="image1" Stretch="None" Source="C:\Users\User\Desktop\image.jpg"/>
</Grid>
如果圖像的大小大於網格的大小,我想通過渲染變換手動縮放以適合網格。我不想使用Stretch =「Fill」,因爲我需要比例因子。 有什麼方法可以檢測到UIElement出現的情況嗎? 我需要你的幫助。
我不知道你爲什麼會想手動重新調整你的圖像時,WPF可以爲你做到這一點...
而不是把圖像直接進入電網,使用Viewbox控制:
<Grid Name="grid1">
<Viewbox>
<Image Name="image1" Stretch="None" Source="C:\Users\User\Desktop\image.jpg"/>
</Viewbox>
</Grid>
視框中會自動縮放圖片以適應網格內...
如果沒有Viewbox,您會不會達到完全一樣的效果,但將'Image.Stretch'設置爲'Uniform'(這是'Viewbox.Stretch'的默認值)? – Clemens
你可以簡單地將Stretch
屬性設置爲Uniform
(或p可能Fill
),並根據圖像的ActualWidth
和ImageSource的Width
計算縮放因子,只要您需要它。下面的示例在SizeChanged處理程序中進行計算,但它可能在其他任何地方。
<Image Name="image1" Stretch="Uniform" Source="C:\Users\User\Desktop\image.jpg"
SizeChanged="ImageSizeChanged"/>
的計算如下:
private void ImageSizeChanged(object sender, SizeChangedEventArgs e)
{
var scale = image1.ActualWidth/image1.Source.Width;
}
由於Uniform
是Stretch
屬性的默認值,你就不必設置它。
語言?語境?您缺少一些信息/標籤... – PhiLho