WinRT, problema de rezoluția ecranului și zoom

WinRT --- rezoluția ecranului Probleme și zoom

Cele mai multe Windows 8 cerere se bazează pe cazuri de clasa paginii. Desigur, acest lucru nu este o cerință, dar oferă unele facilități, cum ar fi mai ușor aplicații rânduri de integrare. Înainte de acest articol discută numai programele care sunt singura instanta a unei clase care derivă din Page, mainpage numit. Este timpul de a face programe care acceptă cu mai multe pagini de aplicații web stil de navigare.

În șablon Visual Studio include două proiecte de mai multe aplicații - Grid App și Split App. Aceste modele sunt construite pe baza unor controale puternice și ListView GridView și să le utilizeze în reprezentarea modelului. Aceste șabloane răspund, de asemenea, schimbări în orientarea ecranului și modul Snap View, astfel încât acest lucru și articolul următor va fi un bun punct de plecare pentru a explora problemele asociate cu schimbarea dimensiunii ferestrei.

Prelucrarea Redimensionarea ferestrelor - o problemă Windows familiară-programatori. Cele mai multe desktop tradiționale programe bazate pe Windows au o schimbare de dimensiune a cadrului, cu ajutorul căruia utilizatorul poate controla dimensiunea și proporțiile ferestrei aplicației. Ferestre-programatori 25 de ani învățat să scrie programe care se adaptează la o dimensiune a ferestrei selectate de utilizator. Desigur, acest lucru nu este întotdeauna posibil: acesta ar trebui să facă o foaie de calcul, în cazul în care utilizatorul reduce fereastra, astfel încât nu va fi nici o celulă vizibilă? Unele programe - cum ar fi Calculator - pur și simplu setați o dimensiune fixă ​​fereastră suficientă pentru a afișa întregul conținut al programului. Pentru aplicații de desktop tradiționale această soluție este acceptabilă numai în cazul în care fereastra este, evident, mai mică decât ecranul.

Aplicație Windows 8, practic, funcționează în modul ecran complet, și o dimensiune minimă de ecran a problemei este mai puțin relevantă pentru ei. Cu toate acestea, Windows 8 aplicații sunt, de asemenea, obiectul unor modificări în orientarea ecranului și includerea Ajustare View și multe aplicații trebuie să se ocupe de astfel de modificări.

rezoluția ecranului Probleme

Ecranul computerului este o rezoluție fixă ​​pe orizontală și verticală, în pixeli, precum și dimensiunea fizică, care este de obicei definit ca o valoare în inci pe diagonala. Cunoscând dimensiunea teorema lui Pitagora, putem calcula rezoluția în pixeli per inch (această unitate este, de asemenea, abreviat ca DPI - dots per inch).

De exemplu, dimensiunea ecranului cu diagonala 1024 x 768 pixeli este egală cu 1280 de pixeli. Dacă dimensiunea fizică o diagonală de 12 inci, rezolutia este de 106 DPI. Diagonală de 23 inci standard, modul monitor desktop-înaltă rezoluție de 1920 x 1080 pixeli cuprinde aproximativ 2203 pixeli, cu o rezoluție de 96 DPI. La monitor de 27 inch cu un ecran de 2560 x 1440 pixeli rezoluție de aproximativ 109 DPI.

Anterior, am menționat că rezoluția ecranului poate fi considerat egal cu 96 de pixeli per inch. După cum puteți vedea, această estimare nu este rău pentru trei monitoare din exemplul de mai sus, cu toate că este posibil să întâlniți monitoare, pentru care de obicei este afectată în mod semnificativ: la locul de muncă, am folosit tableta Samsung cu o dimensiune a ecranului de 1366 x 768 și 11.6 inci cu o rezoluție de 135 DPI. Dacă desenați pe acest ecran, un pătrat cu laturile de 96 de pixeli în loc de inci lungime este de aproximativ 0,7 inch.

Presupunerea de o rezoluție de 96 DPI adesea încălcate pentru ecrane mici, cu mai mulți pixeli. De exemplu, să considerăm un ecran cu o diagonală de 10.6 inci si o 1920 x 1080 pixeli. Rezoluția unei astfel de ecran este 208 DPI; respectiv inch (aviz programator) facilitate va dura mai puțin de o jumătate de inch. Textul este redus, și, deși poate fi încă citit din cauza densității mari de pixeli, pentru a efectua operațiuni cu ele pe ecranul tactil este deja inconfortabil.

Din acest motiv, Windows 8 încearcă să compenseze înalte mijloace ecran rezoluție, relativ transparent la cerere, în cazul în care dimensiunea ecranului în pixeli este 2560 x 1440 și mai sus, iar dimensiunea fizică, de exemplu, este de 12 inch (care dă o rezoluție de 240 DPI și mai sus), Windows schimbă coordonatele pixelilor și dimensiunile utilizate în aplicarea de 180%. Din punctul de vedere al ecranului aplicație are 2560 x 1440 rezolutie 1422 x 800 pixeli.

În cazul în care ecranul nu are o astfel de densitate mare de pixeli, dar are o dimensiune nu mai puțin de 1920 x 1080, iar dimensiunea fizică este suficient de mic pentru a oferi rezoluție de 174 DPI sau mai mare, Windows 8 se modifică toate dimensiunile pixelilor de 140%; astfel, ecranul 1920 x 1080 în ceea ce privește cererea are o dimensiune de 1371 x 771 pixeli.

Amintiți-vă că toate aceste ajustări automate sunt aplicate numai pentru micile ecrane fizic cu mai mulți pixeli. Fizic ecran mare cu rezoluția reală sub 174 DPI nu se va schimba, și, prin urmare, aplicația va „vedea“ dimensiunea sa completă.

Rezoluția de afișare de așteptat pentru Windows Runtime este o definiție logică (DPI logic). De obicei, rezoluția logică este de 96, dar pentru ecrane cu o mare densitate de pixeli, poate fi 134.4 (96 DPI, înmulțit cu 140%) sau 172.8 (96 DPI, înmulțit cu 180%).

Să vedem cum funcționează acest sistem. Programul este similar cu programul WhatRes WhatSize prezentat în articol Evenimente redimensiona și orientarea în WinRT. dar dincolo de dimensiunea ferestrei (care este aceeași cu cea a paginii), primește informații despre rezoluția ecranului.

fișier XAML în proiectul WhatRes creează pur și simplu o instanță a TextBlock:

-Cod din spatele fișier atribuie pagini, precum și DisplayProperties de clasă pentru evenimente statice LogicalDpiChanged, un anumit nume de spațiu Windows.Graphics.Display stivuitoare la evenimente SizeChanged:

Intr-o aplicatie reala DisplayProperties.LogicalDpiChanged eveniment va fi declanșat destul de rare, din cauza dimensiunii ecranului în pixeli sau mărimea fizică de obicei, nu se schimbă în timpul execuției programului. Cu toate acestea, evenimentul poate fi declanșat atunci când este conectat la un computer cu Windows 8 al doilea monitor are o rezoluție de altă logică, și se deplasează programul de la un monitor la altul.

WhatRes programul obține mai întâi dimensiunea ferestrei a proprietăților și pagina ActualWidth ActualHeight, iar apoi calculează dimensiunea reală a pixelilor conform DisplayProperties.LogicalDpi.

WhatRes program este foarte potrivit pentru a rula un emulator de Windows 8, care poate fi selectat pe bara de instrumente standard de Visual Studio. Emulatorul vă permite să rulați o aplicație cu anumite dimensiuni obișnuite de ecran. De exemplu, aici se pare ca WhatRes ecran emulat pe 1920 x 1080 cu o diagonala de 10.6 inci:

WinRT, problema de rezoluția ecranului și zoom

Pentru Windows 8, fereastra aplicației are o dimensiune de 1371 x 771, iar întregul text de afișare și-l grafica bazată pe această sumă. Valoarea pixelilor calculate la fel ca și dimensiunea ecranului în pixeli. După cum puteți vedea, cu dimensiunea fontului de 18 puncte ocupă aceeași zonă relativă, precum și pe ecran de 1366 x 768.

probleme de scalare

Ferestre-programatori sunt folosite pentru a lucra cu coordonate și dimensiuni în pixeli. Atunci când programul rulează pe un ecran mic fizic, cu o densitate mare de pixeli, Windows scalează aceste coordonate și dimensiuni, în funcție de dimensiunea și rezoluția ecranului.

În prima coloană a tabelului următor prezintă unele valori în Diu, utilizate la elaborarea și determinarea mărimii, iar în celelalte coloane arătat modul în care aceste valori sunt convertite pentru a direcționa pixelii de pe ecran: