Direct2D ve High-DPI
DPI kullanan bir uygulama yazmak, çok çeşitli yüksek DPI görüntü ayarlarında kullanıcı arabiriminin (UI) tutarlı bir şekilde iyi görünmesini sağlamanın anahtarıdır. DPI algılamalı olmayan ancak yüksek DPI görüntü ayarında çalışan bir uygulama, ui öğelerinin yanlış ölçeklenmesi, kırpılmış metin ve bulanık görüntüler gibi birçok görsel yapıttan etkilenebilir. Uygulamanıza DPI tanıma desteği ekleyerek, uygulamanızın kullanıcı arabiriminin sunumunu daha öngörülebilir hale getirerek kullanıcılar için görsel açıdan daha çekici ve daha kolay okunmasını sağlarsınız. Neyse ki Direct2D, yüksek DPI'da iyi çalışan uygulamalar yazmayı hiç olmadığı kadar kolaylaştırır. Bu konu aşağıdaki bölümleri içerir.
- Direct2D 'daHigh-DPI Desteği
- Windows 8 ve Yüksek DPI
- DIP nedir?
- İlgili konular
Direct2D'de High-DPI Desteği
Direct2D, yüksek DPI senaryolarıyla çalışmaya yönelik aşağıdaki özellikleri sağlar:
- Uygulama bildirimi, uygulamanın DPI'yi doğru işlediğini gösterdiği sürece, pencereli işleme hedefi oluştururken sistem DPI'sini otomatik olarak kabul eder. (Uygulamanızın DPI'ye duyarlı olduğunu bildirme hakkında bilgi için bkz. UygulamanızınGörüntülendiğinden High-DPI Düzgün Görüntülendiğinden Emin Olun.)
- DPI ayarı değiştiğinde uygulamanın otomatik olarak ölçeklendirilmesini sağlayan DIP'lerde (Cihazdan Bağımsız Pikseller) koordinatları ifade eder.
- Bit eşlemlerin DPI'ye sahip olmasını sağlar ve DPI'yi hesaba katarak bunları doğru şekilde ölçeklendirir. Bu özellik, simgeleri farklı çözünürlüklerde korumak için de kullanılabilir.
- Çoğu kaynağı DIP cinsinden ifade eder ve bu da kaynakların çözümden otomatik olarak bağımsız olmasını sağlar.
- Kayan nokta koordinat alanı ve antialiasing kullanır, böylece herhangi bir içerik rastgele DPI'ye ölçeklendirilebilir.
Direct2D grafik işlem hattı, 96 DPI'den 1200DPI'ye ölçeklendirilecek şekilde tasarlanmıştır.
Windows 8 ve High-DPI
Windows 8'den başlayarak, yüksek DPI desteği için ek özellikler vardır.
Cihaz bağlamı DPI'sı yeterince yüksekse, Direct2D metnin dikey olarak kümeden korumasını etkinleştirmek için kullandığı eşiği değiştirir. Bu, yüksek DPI ekranlarda daha hızlı metin işlemeye neden olur. Ayrıca, ID2D1DeviceContext::SetUnitMode yöntemini kullanarak BIRIM modunu IP'ler yerine piksellere geçirebilirsiniz. Birim modunu piksel olarak, cihaz bağlamı DPI'sini de ekran DPI'sine ayarlarsanız iyileştirme hala etkindir.
DIP nedir?
Cihazdan bağımsız piksel (DIP), skaler ve DPI aracılığıyla fiziksel cihazın piksellerine eşleyen mantıksal bir pikseldir. DPI, noktanın fiziksel cihaz piksellerini temsil ettiği inç başına nokta sayısı anlamına gelir. (Sıfat yazdırmadan gelir; burada noktalar yazdırma işleminin üretebileceği en küçük mürekkep noktasıdır). Standart bir monitörde inç başına 96 nokta kullanıldığından, 96 DPI'sı bir cihazdan bağımsız pikselin (veya DIP) fiziksel pikselle 1:1 eşlendiği anlamına geliyordu. Örneğin, DPI 96*2 = 192 ise, tek bir DIP iki fiziksel pikseli kaplar.
Uygulamaların bu ölçeklendirmeyi doğru bir şekilde işlemesini zorunlu tutmamalarının birçok nedeni vardır; en basit nedenlerden biri, işleme sırasında bu skaler değeri bulmak ve kullanmak için fazladan çalışma gerektirmesidir. Direct2D'de ölçeklendirme varsayılan olarak uygulanır. Bu eşleme nedeniyle fiziksel cihaz pikselleri kesirli DIP koordinatlarına düşebilir. Bu, Direct2D'nin kayan nokta koordinat alanı kullanmasının nedenlerinden biridir.
- fiziksel piksel = (dip × DPI) / 96
Fiziksel pikseli DIP'ye dönüştürmek için şu formülü kullanın:
- dip = (fiziksel piksel × 96) / DPI
Not
Windows 8'den başlayarak, ID2D1DeviceContext::SetUnitMode yöntemini kullanarak birim modunu IP'ler yerine piksellere geçirebilirsiniz.
İlgili konular
-
Uygulamanızın High-DPI Görüntüler Düzgün Görüntülendiğini Sağlama