2013-05-15 11 views
5

Nella documentazione di QPaintDevice (che tutto verniciabile-a entità derivano da, come ad esempio QWidget, QPixmap, ecc), ci sono due funzioni per ricevere il DPI del dispositivoQual è la differenza tra logicalDpiX e physicalDpiX in Qt?

int logicalDpiX() const; 
int physicalDpiX() const; 

int logicalDpiY() const; 
int logicalDpiX() const; 

La documentazione dice

Le funzioni logicalDpiX() e logicalDpiY() restituiscono la risoluzione orizzontale e verticale del dispositivo in punti per pollice. Le funzioni physicalDpiX() e physicalDpiY() restituiscono anche la risoluzione del dispositivo in punti per pollice, ma si noti che se la risoluzione logica e fisica differiscono, il QPaintEngine corrispondente deve gestire il mapping. Infine, la funzione colorCount() restituisce il numero di colori diversi disponibili per il dispositivo di disegno.

Nonostante questa descrizione, non riesco ancora a capire quale sia lo scopo della differenza. Qualcuno può far luce su questo?

risposta

7

Suppongo che sia fisica la risoluzione effettiva del dispositivo e logica è ciò che l'utente ha impostato nelle preferenze os. Questo è popolare con retina o altri display ad alta risoluzione in cui l'utilizzo dei punti fisici per i pixel comporterebbe che tutto fosse troppo piccolo.

ho trovato queste informazioni specifiche finestre: http://msdn.microsoft.com/en-us/library/windows/apps/ff684173

perché le dimensioni effettive dei pixel variano, testo che è leggibile su un monitor potrebbe essere troppo piccolo su un altro monitor. Inoltre, le persone hanno diverse preferenze , alcune persone preferiscono il testo più grande. Per questo motivo, Windows consente all'utente di modificare le impostazioni DPI. Ad esempio, se l'utente imposta la visualizzazione su 144 DPI, un carattere di 72 punti è alto 144 pixel. Le impostazioni DPI standard sono 100% (96 DPI), 125% (120 DPI) e 150% (144 DPI). L'utente può anche applicare un'impostazione personalizzata. L'avvio in Windows 7, DPI è un'impostazione per utente.

Ancora meglio: QT docs:

Una nota sulla logica vs punti fisici per pollice: DPI fisica si basa su le effettive dimensioni dei pixel fisici quando disponibile, ed è utile per anteprima di stampa e altri casi in cui è auspicabile conoscere le dimensioni fisiche esatte dello schermo visualizzato nel formato . I punti logici per pollici vengono utilizzati per convertire gli elementi di font e interfaccia utente dalle dimensioni del punto alle dimensioni dei pixel e potrebbero essere diversi dai punti fisici per pollice. I punti logici per pollice sono a volte impostabili dall'utente nel pannello delle impostazioni dell'ambiente desktop , per consentire all'utente di controllare globalmente l'interfaccia utente e le dimensioni dei caratteri in diverse applicazioni.

0

Non sono sicuro al 100%, ma penso risoluzione fisica - è la risoluzione effettiva della tela su cui si sta dipingendo. risoluzione logica - è la risoluzione che usi nel tuo programma. Ad esempio, per gestire schermi diversi si potrebbe dire che per qualsiasi risoluzione fisica del display (tela) lavorerò con risoluzione logica 100 per 100 pixel e adopererò layout fisso ad esempio.Il ridimensionamento verrà eseguito automaticamente dal pittore utilizzando la risoluzione fisica

OpenGL funziona in questo modo, ad esempio. Trasforma prima tutte le coordinate (usando il modello, la vista, le matrici di proiezione) in un cubo di intervallo [-1, 1], esegue calcoli in queste coordinate e successivamente le mappa nel buffer di colore effettivo

Problemi correlati