2011-11-03 14 views
5

Mevcut Win32 MFC tabanlı uygulamalarımızdan biriyle sorun yaşıyoruz. Yüksek dpi ayarları kullanan ekranlarda doğru şekilde görüntülenmez. Daha spesifik olarak, Windows XP'de 120 dpi seçildiğinde, uygulamada metnin ölçeklendiği ancak kaplarının (düğmesinin sınırlarını taşan metin vb.) Pek çok yeri vardır. Bu, Windows 7'de (ve Vista)> 96 dpi seçildiğinde ve "XP stili dpi ölçeklemeyi kullan" seçildiğinde de oluşur. Xp stili ölçekleme seçilmezse, Win7'nin bunun yerine DPI sanallaştırmasını kullandığını anlarım. DPI sanallaştırması kullanılırken her şey iyi görünüyor (Tamam şeyler bulanık, ama en azından doğrular). Varsayılan olarak Win7 120 dpi'de xp stili ölçekleme kullanılır ve bir sonraki ayar (144 dpi) kullanılmaz. Yani bizim app 144 dpi doğru görünüyor ama 120 dpi yanlış.Windows Uygulama - DPI Sorunları

ben "DPI farkında" o zaman bu DPI sanallaştırma (ancak XP tarzı dpi ölçeklendirme) ait döner olarak uygulamayı bildirmek için bildirim uygulamalarını düzenlemek ve bu hiçbir yerde beni alırsa. İşler hala çok kötü görünüyor (120 dpi için bir değişiklik yok, 144 dpi şimdi bozuldu).

Bu sorunu çözmem gerekiyor ve genelde DPI/ölçekleme sorunlarını okumaya çalışıyorum ve bir öğrenme deneyimi oldu. Şimdiye kadar uygun bir çözüm bulamadım. Şu anda tam ve doğru bir düzeltme yapmak niyetinde değilim (uygulama, dpi'ye göre tüm öğeleri doğru şekilde ölçeklendirir). Bu bir çok yeniden yazma gerektirir. Bence iki olası çözüm var. Birisi hepsi bir arada DPI ölçeklemeyi kapatır. Bu, bir kullanıcı Win7 sistemi 120 dpi'ye ayarlanmışsa, sistemindeki her şeyin iyi/büyük görüneceği, ancak uygulamanızın doğru görüneceği, ancak diğer uygulamalardaki diğer her şeye kıyasla küçük olacağı anlamına gelir. İkinci çözüm, uygulamamızın DPI sanallaştırmasını nasıl kullanacağını, ancak XP stili dpi ölçeklemeyi asla kullanmamasını zorlayacaktır. Bunun bir uygulama tarafı değişikliği olmasını ve son kullanıcılara Windows yapılandırma değişiklikleri yapması gerekmediğini belirtmek istiyorum. Şu ana kadar hiçbir çözümü gerçekleştirmenin bir yolunu bulamadım.

Bu konuda daha fazla bilgiye sahip olabilir misiniz? Lütfen yanıt verin ve doğru şekilde bana işaret edin.

Teşekkür

+1

Sorun, düzen kodunuzda veya çizim kodunuzda mı? Örneğin, düğmeler ve diğer standart denetimleri x piksel olarak ayarladığınız sorun mu, yoksa sabit boyutlara sahip kendi denetimlerinizi (örn. GDI çağrılarını kullanarak) çeken bir kodunuz var mı? Düzenini nasıl yapıyorsun? Formlar? İletişim şablonları Özel kod? –

+0

Burada sihir yok, sadece pencerelerinizi büyütmeniz gerekecek. Ya da yazı tipleriniz daha küçük, zehirinizi seçin. –

cevap

2

Sen 120 DPI ayarları hakkında DPI Sanallaştırma zorlayamaz. Bunu bir ürün için kendim araştırdım çünkü yüksek DPI'da bulanık görünüme sahip olmak iyi bir tradeoff gibi görünüyordu.

Biz UI konumlandırma tam yeniden yazmak yapma ve yüksek DPI ayarlarında yazı ölçekleme ile düzgün ölçek olması ölçekleme sona erdi. İstemci artık tamamen DPI ile uyumlu ve DPI ayarlarında düzgün bir şekilde ölçeklendiriliyor.

Bu işi doğru şekilde yapmak, oldukça karmaşık bir müşteri için durumumuzda 3 ay bir adam aldı.

Hiç denemediğimiz ikinci bir planımız vardı ancak sizin için işe yarayabilir: Başlangıçta işletim sisteminin DPI ölçekleme faktörünü okuyun. Ardından, bu faktörü tarafından sahip olduğunuz tüm yazı tipi örneklerini azaltın, böylece Windows yazı tiplerini yeniden ölçeklendirdiğinde, UI'nin sığabileceği boyuttadır. Elbette yüksek DPI ayarlarına sahip kullanıcılar, uygulamanızda daha büyük yazı tipleri almayacak, ancak en azından kullanılabilir olacak.