我正在开发WPF应用程序。在那个iam中,在Listbox中加载图像。有什么方法可以知道分辨率低的图像吗?我想显示带有警告的低分辨率图像。 Plz帮助我了解这个查询。 在此先感谢。如何知道WPF应用程序中的图像信息
回答
假设您要加载位图图像(包括BMP,JPEG,PNG等 - 任何不是矢量图形图的图像),您可以使用System.Windows.Media.Imaging中的BitmapSource类来读取源代码图像的PixelHeight和PixelWidth。虽然可以直接将图像加载到BitmapSource中,但如果要加载到Image控件中,则可以通过图像的Source属性直接访问BitmapSource。然后,只需确定低分辨率对您来说意味着什么 - 小于50像素的平方,100像素,200像素等,并在PixelHeight或PixelWidth小于此像素时显示警告。
把它放在一起,假设我们想在图像顶部显示一个橙色矩形,如果它小于100像素宽或小于100像素高。使用非列表框的实现,我们可以这样做:
<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只触发了检查平等,我们需要一个转换器来比较两个值 - 在这种情况下,我们的实际像素高度/宽度和像素高度/宽度我们已经确定了图像'低分辨率' - 并返回一个我们可以触发的真/假值。在上面的代码中,它被命名为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();
}
}
然后,当被加载的图像时,矩形的样式检查其触发,查看是否具有图像的高度或宽度小于100像素;如果是这样,它会将矩形的可见性从默认(折叠)更改为可见,从而在图像顶部显示橙色矩形。当然,当图像分辨率较低时,您可以轻松使用不同的元素进行显示。
要在列表框中执行此操作,您只需更新项目模板以包含源图像和警告图标;然后根据与其关联的图像将样式应用于警告图标。你不能在这里使用ElementName绑定,但其他的绑定类型应该就足够了。或者,将下面的代码(使用ElementName绑定)包装到包含图像和警告图标的自定义控件中,以及您可以像项目模板中的普通图像控件一样使用该控件,不同之处在于您的自定义控件显示警告图标(当显示低分辨率图像时)。
- 1. android:知道我的应用程序的构建信息
- 2. 如何在wpf应用程序中显示网页的信息
- 3. 如何知道谁在WPF中连接到应用程序?
- 4. 发送信息给WPF应用程序
- 5. 如何存储WPF应用程序的登录信息
- 6. 如何知道任何应用程序发送短信
- 7. WPF应用程序如何知道从哪里开始?
- 8. 关于C#中图像的信息WPF
- 9. 如何知道pthread_barrier_t上的netbeans信息
- 10. iphone应用程序如何知道其他应用程序?
- 11. 如何在WPF应用程序中使用Interop.WIA扫描图像
- 12. 如何设置应用程序信息
- 13. 如何在C#WPF应用程序中拖放图像文件
- 14. 如何知道wpf应用程序是否在终端服务会话中?
- 15. 目标c:如何知道图片的检查员信息
- 16. 如何在UWP应用程序中创建信息性的Toast通知
- 17. 如何知道应用程序试图访问哪些文件?
- 18. 像应用程序详细信息屏幕滚动视图
- 19. Rails应用程序信息
- 20. 如何在应用程序中获取MMS/SMS消息信息?
- 21. 如何知道Android中的应用程序的显示大小?
- 22. 我不知道如何在我的应用程序中注销
- 23. 如何知道iPhone中安装的应用程序
- 24. 如何知道我的android应用程序在reciver中运行?
- 25. 如何知道我的应用程序中android
- 26. 建立在.net 3.5 wpf应用程序的日期信息
- 27. 阅读WPF应用程序的汇编版本信息
- 28. 如何在iOS应用程序中存储通知详细信息?
- 29. 如何在wpf应用程序启动时显示图像?
- 30. 如何将图像保存在WPF应用程序在C#
Thanks for the Reply – ibrahimkhan 2009-05-26 13:43:18