私はWPFアプリケーションを開発中です。リストボックスにイメージをロードしています。低解像度の画像を知る方法はありますか?低解像度の画像を警告で表示したい。 Plzはこのクエリに関して私を助けます。 ありがとうございます。wpfアプリケーションで画像に関する情報を知る方法
答えて
ビットマップイメージ(BMP、JPEG、PNGなど - ベクトルイメージ描画ではないもの)を読み込んでいると仮定すると、System.Windows.Media.ImagingのBitmapSourceクラスを使用してソースを読み取ることができます画像のPixelHeightとPixelWidth画像を直接BitmapSourceに読み込むことはできますが、Imageコントロールに読み込んでいる場合は、ImageのSourceプロパティから直接BitmapSourceにアクセスできます。次に、PixelHeightまたはPixelWidthがそれより小さい場合、低解像度が50px未満、100px、200px未満などの警告を表示することを意味します。
画像の上にオレンジ色の長方形が表示されるようにするには、幅が100px未満または100px未満の場合は表示します。非リストボックスの実装を使用して、我々は行うことができます:
<Image x:Name="DemoImage" Source="demo.png"/>
<Rectangle Fill="Orange" Width="20" Height="20">
<Rectangle.Resources>
<local:LessThanConverter x:Key="LessThanConverter"/>
</Rectangle.Resources>
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=DemoImage, Path=Source.PixelHeight,
Converter={StaticResource LessThanConverter}, ConverterParameter=100}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=DemoImage, Path=Source.PixelWidth,
Converter={StaticResource LessThanConverter}, ConverterParameter=100}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
WPFのみ平等をチェックするトリガので、我々は2つの値を比較するために、コンバータを必要とする - この場合には、当社の実際のピクセルの高さ/幅とピクセル高さ/幅をイメージを「低解像度」にして、トリガーできる真偽値を返します。上のコードでは、LessThanConverterという名前です。コンバータのコードは単純です:次に
/// <summary>
/// Converter to use in WPF triggers that returns true when
/// 'value' is less than 'parameter'.
/// </summary>
public class LessThanConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
return ((int)value < System.Convert.ToInt32(parameter));
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
、イメージがロードされたときに、長方形のスタイルは、画像が100pxに満たない高さや幅を持っているかどうかを確認するために、そのトリガをチェックします。そうであれば、矩形の可視性がデフォルト(Collapsed)からVisibleに変更され、イメージの上にオレンジ色の四角形が表示されます。もちろん、画像の解像度が低いときは、別の要素を使って簡単に表示できます。
リストボックスでこれを行うには、ソースイメージと警告アイコンの両方を含むようにアイテムテンプレートを更新するだけで済みます。次に、関連付けられているイメージに基づいて警告アイコンにスタイルを適用します。 ElementNameバインディングはここでは使用できませんが、他のバインディングタイプのいずれかで十分です。
または、ElementNameバインディングを使用する以下のコードをイメージと警告アイコンの両方を含むカスタムコントロールにラップし、カスタムコントロールに表示される点を除いてアイテムテンプレートの通常のImageコントロールと同様に使用できます。警告アイコン(低解像度の画像が表示されている場合)。
返信ありがとうございます – ibrahimkhan