/ / Redimensionnement de System.Controls.Image avec le mode de redimensionnement du voisin le plus proche - c #, wpf, image, redimensionnement, contrôles

Redimensionnement de System.Controls.Image avec le mode de redimensionnement du voisin le plus proche - c #, wpf, image, redimensionnement, contrôles

J'essaie de créer un jeu qui utilise un style de pixel art. J'ai créé mes éléments et les ai utilisés en tant que ressources, qui sont ajoutées à la fenêtre en tant qu'objets System.Controls.Image.

Dans le concepteur, ils s'avèrent toujours trop petits. Par conséquent, lorsque je les redimensionne, elles deviennent un peu floues en raison de l’application d’une interpolation bicubique sur elles.

J'ai réussi à éviter cela en évitantredimensionnement; Je redimensionne dans le concepteur pour connaître la taille appropriée, puis utilise le redimensionnement du voisin le plus proche sur l'image d'origine (à l'aide d'un programme externe) pour obtenir le fichier source à cette taille. Je mets ensuite à jour l'image dans le projet et supprime tout redimensionnement, la laissant ainsi à sa taille d'origine, c'est-à-dire sans interpolation.

Comme vous pouvez l’imaginer, c’est un peu fastidieuxprocessus. J'ai examiné les choix d'interpolation lors du redimensionnement, mais la plupart des réponses que je peux trouver concernent System.Drawing.Image, pas System.Controls.Image. Je pense qu'une telle solution (si elle est adaptée) serait horriblement compliquée et impliquerait plusieurs conversions / conversions (et peut-être même inutiles).

Existe-t-il un moyen d'obtenir le redimensionnement du voisin le plus proche sur System.Controls.Image?

Réponses:

1 pour la réponse № 1

Pour définir le mode de redimensionnement, vous devez définir le RenderOptions.BitmapScalingMode="NearestNeighbor" option pour l'arborescence visuelle. Vous pouvez définir cela au niveau de la fenêtre.

Pour résoudre le problème plus large, il semble que quelque chose soit à l'origine de la réduction de vos images:

  • Assurez-vous de régler le Stretch="None" option sur le champ Image,
  • Assurez-vous que vous utilisez les arrondis SnapsToDeveicePixels ou Layout
  • Enfin, si tout échoue, définissez explicitement la largeur et la hauteur de l'image.

J'ai également rencontré des cas où le DPI du fichier d'image n'étant pas défini sur (je crois) à 90, le moteur de rendu applique la mise à l'échelle.