Виходячи з питання про співвідношення сторін , мені цікаво почути, чим користуються інші люди, працюючи над 2D системами інтерфейсу користувача (швидше за все, своїми власними рішеннями для дому). Зокрема, як поводитися з системами координат. На мій погляд, є три варіанти:
- Жорстко кодовані координати (наприклад: 0 -> 720, 0 -> 576)
- Нормалізовані координати (0,0 -> 1,0, 0,0 -> 1,0), відображені в реальні координати перед візуалізацією
- Віртуальні координати (наприклад: 0 -> 1600, 0 -> 1000), відображені в реальні координати перед візуалізацією
Жорстко закодований, очевидно, корисний лише в тому випадку, якщо ви знаходитесь на встановленій платформі і знаєте, які координати вашого екранного простору заздалегідь, або якщо ви готові створити макети екрану для всіх можливих наборів розмірів екрана.
Нормалізовані координати є приємними, але страждають від неоднозначності, коли співвідношення сторін екрана не фіксовано (наприклад, 0,75 відображає іншу фізичну координату при запуску на широкоекранному, ніж це у 4: 3). Крім того, для авторів, дійсно контрпридатним оголошувати елемент інтерфейсу таким, що є (0,2 x 0,2), лише виявити, що він насправді не квадратний під час надання.
Віртуальні координати однозначні, але страждають від тих же проблем, що і нормалізовані координати на етапі перестановки: крихітна десяткова невідповідність може спричинити помилки за одним, що означає, що елементи користувальницького інтерфейсу, які мають плитка, тепер мають між собою шов.
Так само, якщо у вас є екран з фіксованою роздільною здатністю, як нормалізовані, так і віртуальні координати означають, що дуже важко гарантувати зіставлення 1: 1 між тонко проробленими пікселями вашого виконавця у зображенні інтерфейсу користувача та пікселями на екрані, тобто ви ризикуєте неприємні артефакти масштабування (припускаючи, що ви відображаєте текстуровані квадратики на екрані).
Ми працювали з підходом до віртуальної координації, зокрема, щоб уникнути неоднозначності щодо співвідношення сторін. Так, при візуалізації на екрані 16:10, простір інтерфейсу користувача дорівнює (0,0) -> (1600,1000), але при візуалізації в 4: 3, корисний простір інтерфейсу є фактично (133,0) -> (1467 , 0).
Чи є кращі рішення, про які я просто не знаю? Чи є якісь стратегії мінімізації проблем, які мають ці три підходи?