1

画像を含むグリッドがあります。

<Grid Name="grid1">
    <Image Name="image1" Stretch="None" Source="C:\Users\User\Desktop\image.jpg"/>
</Grid>

画像のサイズがグリッドのサイズよりも大きい場合は、render Transform を使用して手動で拡大縮小し、グリッドに合わせます。倍率が必要なため、 Stretch="Fill" を使用したくありません。UIElement が見えなくなる状況を検出する方法はありますか? あなたの助けが必要です。

4

2 に答える 2

3

StretchプロパティをUniform(またはおそらく) に設定するだけで、必要に応じてImage の とImageSource のFillから倍率を計算できます。以下のサンプルでは、​​SizeChanged ハンドラーで計算を行っていますが、それ以外の場所でもかまいません。ActualWidthWidth

<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する必要はまったくありません。

于 2013-01-08T13:38:04.747 に答える
2

WPFで画像を手動で再スケーリングできるのに、なぜ手動で画像を再スケーリングしたいのかわかりません...

画像をグリッドに直接配置する代わりに、ビューボックスコントロールを使用します。

<Grid Name="grid1">
    <Viewbox>
        <Image Name="image1" Stretch="None" Source="C:\Users\User\Desktop\image.jpg"/>
    </Viewbox>
</Grid>

ビューボックスは、グリッド内に収まるように画像を自動的に拡大縮小します...

于 2013-01-08T12:49:52.067 に答える