Я намагаюся створити гру, в якій використовується стиль піксельного мистецтва. Я створив свої активи та використовував їх як ресурси, які додаються до вікна як об'єкти System.Controls.Image.
У дизайнера вони завжди виявляються занадто малими. В результаті, коли я змінюю їх розмір, вони стають дещо розмитими через те, що на них застосовується якась двокубічна інтерполяція.
Я встиг уникнути цього, уникаючизміна розміру; Я змінюю розмір у дизайнера, щоб дізнатись, який розмір є доречним, а потім використовувати найближчий сусід, змінюючи розмір оригінального зображення (за допомогою зовнішньої програми), щоб отримати вихідний файл до такого розміру. Тоді я оновлю зображення у проекті та видалив будь-яку зміну розміру, тому залишив його в оригінальному розмірі, тобто без інтерполяції.
Як ви можете собі уявити, це досить втомлюєпроцес Я розглянув варіанти інтерполяції під час зміни розміру, але більшість відповідей я можу знайти відносно System.Drawing.Image, а не System.Controls.Image. Я відчуваю, що будь-яке таке рішення (якщо це буде адаптовано) було б жахливо брудним і пов'язане з кількома (і, можливо, невиправданими) переходами / видами.
Чи є спосіб отримати зміну розміру найближчого сусіда на System.Controls.Image?
Відповіді:
1 для відповіді № 1Щоб встановити режим зміни розміру, вам потрібно встановити RenderOptions.BitmapScalingMode="NearestNeighbor"
варіант для візуального дерева. Ви можете встановити це на рівні вікна.
Щоб вирішити більшу проблему, здається, що щось спричиняє масштабування ваших зображень у першу чергу:
- Переконайтеся, що ви встановили
Stretch="None"
опція у вікні керування зображеннями, - Переконайтеся, що ви використовуєте SnapsToDeveicePixels або округлення макета
- Нарешті, якщо все інше не вдається, явно встановлювати ширину та висоту зображення.
Я також потрапляю в випадки, коли DPI зображення файлу не встановлюється (я вважаю) 90, тому рендеринг застосував масштабування.