Незалежність від роздільної здатності

У WPF не існує способу визначити, що таке реальний піксель. Од ним із принципів проектування WPF був постулат про незалежність від разре вирішальним здатності, тобто додаток повинно було працювати однаково при будь-якому дозволі пристрою і у всіх випадках виглядати оптимально. Незалежні ності від роздільної здатності проявляється в різних формах: від интен пасивного використання векторної графіки до механізму розміщення і т.д. Од ним з основних способів реалізації такої незалежності в WPF є застосування не залежить від дозволу системи координат, яка не базується на фізичних пікселях.







У GDI система координат спирається на пікселі. Коли ми говоримо, що одна точка відстоїть від іншої на 5 пікселів, це означає, що на пристрої виведення між цими точками буде рівно п'ять пікселів. Звичайно, в GDI є й інші системи коордінат1, але в кінцевому підсумку все зводиться до пікселів.

У WPF в якості одиниці вимірювання довжини використовується логічний пік сель, рівний 1/96 дюйма. Відразу ж виникає питання: чому саме 1/96? Яс але, що 1 сантиметр або 1 дюйм виглядав би куди природніше. Але розробники вже довгий час користуються пікселями в сенсі GDI, а роздільна спосіб ність більшості пристроїв виведення дорівнює 96 dpi (точок на дюйм), тому 1/96 дюйма не тільки відповідає інтуїтивним очікуванням програмістів, а й відпо тствует сучасним фізичних пристроїв. Я впевнений, що в міру вище ня роздільної здатності моніторов2 це рішення буде здаватися все більш і більш проізвольним3.







Для узгодження з логічної картиною світу в WPF при рендеринге перед покладається нескінченна роздільна здатність. Зокрема, це означає, що текст промальовується однаково незалежно від розміру або разреше ня пристрою виведення, оскільки внутрішні обчислення проводяться з біс кінцевою точністю. (Ну, звичайно, не нескінченною, але досить високою!) Од нако при роботі з пристроями, що мають відносно низький дозвіл, наприклад, комп'ютерними екранами, виникають складнощі.

Є два загальноприйнятих способу створення якісного зображення на ек ранах з невеликою роздільною здатністю, наявних у більшості користувачів. Алгоритм згладжування (anti aliasing) виконує всі обчислення, орієнтуючись на високий дозвіл, а при виведенні на екран визначає, наскільки

Мал. 5.2. Прямокутники крупним планом при включеному і відключеному режимі суміщення з пікселями. Зверніть увагу, наскільки чітким виходить сов ня зображення, незважаючи на те, що контур прямокутника проходить не точно по кордонах пікселів.

У загальному випадку немає необхідності змінювати умовчання для включення ре жиму суміщення; але при необхідності для явного управління ім служить властивість SnapsToDevicePixels.







Схожі статті