Je développe une application WPF. Dans ce iam chargement des images dans Listbox. Y at-il un moyen de savoir que les images ayant une faible résolution. Je veux montrer des images à basse résolution avec avertissement. Plz m'aider à propos de cette requête. Merci d'avance.Comment connaître les informations sur les images dans l'application wpf
Répondre
En supposant que vous chargez des images bitmap (incluant BMP, JPEG, PNG, etc.), vous pouvez utiliser la classe BitmapSource dans System.Windows.Media.Imaging pour lire la source PixelHeight et PixelWidth de l'image. Alors que vous pouvez charger une image directement dans un BitmapSource, si vous chargez dans un contrôle Image, vous pouvez accéder au BitmapSource directement à travers la propriété Source de l'Image. Ensuite, il s'agit juste de déterminer ce que signifie la basse résolution - moins de 50px carré, 100px, 200px, etc. et d'afficher un avertissement lorsque PixelHeight ou PixelWidth est inférieur à cela. En mettant tout cela ensemble, disons que nous voulions afficher un rectangle orange au-dessus d'une image si elle était inférieure à 100 pixels de large ou inférieure à 100 pixels de hauteur. En utilisant une implémentation non listbox, nous pourrions faire:
<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>
Depuis WPF déclenche vérifier que l'égalité, nous avons besoin d'un convertisseur pour comparer deux valeurs - dans ce cas, notre taille réelle des pixels/largeur et la hauteur pixel/largeur nous avons déterminé que l'image est "basse résolution" - et renvoyons une valeur vraie/fausse sur laquelle nous pouvons nous déclencher. Dans le code ci-dessus, il s'appelle LessThanConverter. Le code du convertisseur est simple:
/// <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();
}
}
Puis, quand une image est chargée, Style du rectangle vérifie ses éléments déclencheurs pour voir si l'image a une hauteur ou largeur qui est inférieure à 100px; si tel est le cas, la visibilité du rectangle par défaut (Réduit) devient visible, ce qui affiche le rectangle orange au-dessus de l'image. Bien sûr, vous pouvez facilement utiliser un élément différent pour afficher lorsque l'image a une faible résolution. Pour cela dans une zone de liste, il vous suffira de mettre à jour vos modèles d'éléments pour inclure à la fois votre image source et l'icône d'avertissement; Ensuite, appliquez le style à l'icône d'avertissement en fonction de l'image à laquelle elle est associée. Vous ne pouvez pas utiliser la liaison ElementName ici, mais l'un des autres types de liaison devrait suffire. Ou, enveloppez le code ci-dessous - qui utilise la liaison ElementName - dans un contrôle personnalisé contenant à la fois une icône d'image et d'avertissement et que vous pouvez utiliser comme un contrôle Image normal dans votre modèle d'élément, sauf que votre contrôle personnalisé affiche icône d'avertissement en plus de l'image (lorsqu'une image basse résolution est affichée).
- 1. Filigrane sur les images hotlinkées?
- 2. Comment traverser Request.Form sans connaître les détails?
- 3. SQL Modèle de date pour les dates que l'utilisateur ne peut pas connaître toutes les informations
- 4. Images 9 tranches dans WPF
- 5. Obtenir les informations sur le matériel
- 6. Récupère les informations sur les fichiers en variables?
- 7. C# windows informations sur les appareils mobiles
- 8. Comment définir les informations DPI dans une image?
- 9. Comment afficher les images dans datatable?
- 10. Problème avec les images sur TreeView
- 11. Comment connaître les classements disponibles dans SQL 2000/2005
- 12. Rails horodatages sur les images en CSS
- 13. Obtenir des informations sur les polices dans .net
- 14. Informations sur les ports SCO Unix Com
- 15. Aide sur les informations T4 et Schema
- 16. Informations sur les techniques d'exploration Web
- 17. Comment aligneriez-vous les images?
- 18. Coins arrondis sur les images avec jquery
- 19. Quelles sont les ressources à connaître sur le droit d'auteur?
- 20. Comment obtenir les images visionnées récemment sur le navigateur Web?
- 21. Informations sur les articles mises à jour dans le conteneur, comment puis-je les actualiser?
- 22. Comment désactiver les effets MouseOver sur un bouton dans WPF?
- 23. Informations sur les dossiers spéciaux dans le système d'exploitation
- 24. Comment régler les recherches sur le Web pour filtrer les anciennes informations?
- 25. Comment superposer des images les unes sur les autres sur l'iPhone/Cocoa?
- 26. Comment puis-je connaître les événements déclenchés par GXT?
- 27. WPF: Habillage avec des images
- 28. informations sur les cellules lorsque vous cliquez sur la cellule
- 29. Comment redimensionner les images hors serveur
- 30. Réduire/agrandir les images
Merci pour la réponse – ibrahimkhan