Le chargement de l'image dans ImageSource - incorrect de largeur et de hauteur
Mon problème est que le chargement de l'image semble être uncorrectly des ressources de l'application. C'est code:
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(@"pack://application:,,,/WpfApplication3;component/Resources/Images/16x16_incorrect.png", UriKind.Absolute);
bi.EndInit();
ImageSource s = bi;
Fichier Image "16x16_incorrect.png" est 16x16 32bpp fichier PNG, mais après l'exécution de code ci-dessus, s.Largeur = s.Hauteur = 21,59729.... J'ai aussi un autre fichier "16x16_correct.png", lorsque je charge de la même manière, à la fois la ImageSource la Largeur et la Hauteur sont égales à 16,002.
J'ai un gros pack de utile PNG 16x16 32bpp images, j'ai l'intention d'utiliser dans l'INTERFACE utilisateur de mes applications. Malheureusement, chacun d'entre eux chargement incorrectement & recherche floue (ou onctueux), parce que le système s'étend à partir de 16x16 à 21x21.
- correcte de l'image :
- d'image incorrecte :
Aimeriez-vous comme à l'obligeance de nous expliquer la solution possible à ce problème? Si le problème à la source des fichiers image, comment puis-je changer ImageSource.Largeur à la taille désirée pour utiliser ces fichiers?
OriginalL'auteur JSP | 2010-09-19
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la résolution de l'image à 96 DPI (actuellement c'est 71.12 pour la mauvaise png).
Vous pouvez le faire en utilisant la connexion paint.net programme ( http://getpaint.net ) dans le menu d'Image sélectionnez la taille du Canevas et de définir le champ "résolution" à 96
OriginalL'auteur
Si vous ne souhaitez pas modifier les DPI de l'extérieur, vous pouvez le faire avec ceci:
Si vous avez juste besoin de corriger les valeurs de l'Image.Source.Largeur/Hauteur, vous pouvez faire quelque chose comme je l'ai fait:
et de le redimensionner comme suit:
OriginalL'auteur
C'est à cause de la résolution des images. WPF rend par défaut avec 96 dpi. Si vous regardez le dpi de la mauvaise image png. Vous verrez qu'il est défini à 72. Cela provoque WPF à l'échelle de l'image à 96 DPI et de garder la taille d'origine.
Il y a deux solutions.
Vous pouvez:
Définir la Largeur et la Hauteur de propriétés à 16, et la propriété Stretch Uniformes
La deuxième solution ne permet pas de changer les DPI à tous, il suffit d'étirer l'image d'origine (uniformément) remplir le récipient qui peut conduire à floues de l'image.
En effet, pour l'exemple dans la question, je pense que ce serait faire peu de différence.
OriginalL'auteur