Yüksek dpi ölçeklendirmeye zorlama nasıl yapılır?


27

Bir uygulamayı yüksek çözünürlükte ölçeklendirmeye nasıl zorlayabilirim?

  • Geliştiricilerin, gerçekten olmadığında, yüksek dpi farkında olarak gösterdiği bir uygulama olduğunu farz et. Dpi-ölçeklendirmeyi nasıl zorlayabilirim?

  • HighDpiAwareUygulamanın gerçekten olmadığında , Microsoft'un " " uyumluluk altlığını " uyguladığı bir uygulama olduğunu farzedin . Dpi-ölçeklendirmeyi nasıl zorlayabilirim?

Windows'u bir uygulamaya dpi ölçeklendirme uygulamasına nasıl zorlayabilirim?


Düzenleme: Yüksek dpi ölçeklendirme nedir?

Tüm kullanıcılar Windows'u 96 dpi'da çalıştırmaz. Her düğmenin 75x23 piksel olması gerekmiyor, her araç çubuğu 25 piksel yüksek değil ve her bir ağaçlandırma glifi 16x16 değil. Kullanıcı Windows için farklı bir dpi ayarı seçtiyse, her şeyi uygun şekilde ölçeklendirmeniz gerekir.

Sorun şu ki, hiçbir geliştirici yüksek dpi ayarlarını iyi işleyerek işini yapmıyor. En iyi ihtimalle her şey "aynı boyutta" kalacaktır, bu da her birinin ufacık göründüğü anlamına gelir . En kötü hallerde, metin kırpılmış ve kontroller görünmez halde yanlış şekilde düzenlenmiştir.

Windows Vista'dan başlayarak ve Masaüstü Kompozisyonunun gücünden faydalanan Microsoft, geliştiricilerin işlerini yapmalarından vazgeçti ve şimdi de uygulamalara yalan söylüyor. Kullanıcıların 96 dpi'da çalıştığını söylerler. Windows daha sonra formları büyütmek için ekran kartını ve Masaüstü Kompozisyonunu kullanır.

Pro: formun içeriği güzel bir okunabilir boyutta olacak.
Con: her şey biraz bulanık olacak.

Bu "yüksek dpi ölçeklendirme" özelliği yalnızca kullanıcının takdirine bağlı olarak çalışır ve şunları gerektirir:

  • Windows Vista veya daha yenisi
  • Masaüstü Kompozisyonu etkinleştirilecek
  • "Windows XP stili ölçeklendirmeyi kullan" özelliğini kapatması için kullanıcı
  • kullanıcının uygulamanız için ölçeklendirmeyi devre dışı bırakmaması

Bir geliştirici olarak, yüksek dpi ölçeklendirmeden vazgeçebilirsiniz; Başvurunuzu doğru yazmak için çaba sarf ettiyseniz ve yüksek dpi değerlerini doğru kullanacağınızı biliyorsanız. Bu ölçeklendirmeden, " yüksek dpi farkında " olduğunuzu beyan ederek çalıştırılabilir dosyalarınıza bir bildirim girişi ekleyerek vazgeçersiniz .

Konusu nasıl uygulamanız (font face, yazı tipi boyutu ve dpi ayarı dahil), kullanıcının tercihlerine saygı yapmak için bir sorudur stack overflow. Bildiri girişi için " yüksek dpi farkındalığınızı " bildiren sözdizimi .

Süper kullanıcı hakkındaki bu soru, aslında uygulama yüksek dpi farkında olmadığında , ileri giden ve yüksek dpi'lik bilinçli bir bildirim girişi ekleyen bir geliştiriciyi nasıl görmezden geleceğidir. Windows'a ölçeklendirmeyi devre dışı bırakmasını söylediler, ancak gerçekte uygulamayı test etmediler. Orada orada yazılım "yüksek dpi farkında" tezahür girişle ve şimdi uygulama "büyük fontlar" (örneğin 120dpi) altında kullanılamaz.


Ben de bununla ilgileniyorum. DPP farkında olmayan ve orijinal olarak 800x600 ekran için tasarlanmış kritik bir uygulamamız var. Windows varsayılan olarak ölçeklendirmiyor ve XP, Vista veya 7 kullanıyor olmamız farketmiyor. Personelimiz bu 800x600 uygulamasında zamanlarının çoğunu harcadıkları için 20 "LCD monitörlerini kullanmakta ısrar ediyorlar 800x600 çözünürlükte bu çok büyük bir israf ve MS Office, IE8 vb. kullanmaları gerektiğinde kendiliğinden ortaya çıkan piksel eksikliği kendi yollarına karışıyor
Miles Erickson

1
Windows Vista'ya kadar Microsoft , ölçeklendirmeyi özellikle kapsam dışı bırakmayan uygulamaları ölçeklemek için grafik kartını kullanmak için Masaüstü Kompozisyonunu (bazıları yanlışlıkla Aero olarak adlandırdıkları ) kullanmaya başlamamıştı. Orada XP'de hiçbir ölçeklendirme oldu ve yok istediğiniz Eğer uygulama düzgün yazılacak isteyen Vista 7. ölçekleme. Bir geliştiricinin makinesine yürüyün ve çözünürlüklerini 1050'ye geri getirin ve dpi'yi 168'e ayarlayın. Uygulama düzgün davranmazsa her şey tard modunda yakınlaştırılır. Onları düzelene kadar yiyecek veya su alamadıklarını söyle.
Ian Boyd

Kullandığımız uygulamaları oluşturan geliştiricilere her zaman erişemeyiz. Keşke yapsaydık ...
Cylindric

Formlar = şekiller?
jiggunjer

Yanıtlar:


5

Hmm. Önerim, bildirimi düzenlemek ve yanlış bildirimi kaldırmak olacaktır. Ve geliştirici hakkında bununla ilgili hata yapmayı unutmayın!

Düzenleme: Bildirimi çalıştırılabilir öğenin yanına yerleştirmenizin mümkün olduğunu unutmayın; örneğin foo.exe, bildirimi siz yerleştirirsiniz foo.exe.manifest. Bkz MSDN makale ( "Dosya adı sözdizimi" denilen bölümde bakış).


Sanırım gitmenin tek yolu bu. Dezavantajı: Uygulamanın dijital imzasını geçersiz kılar.
Ian Boyd

@Ian: Eğer yok gibi görünüyor sahip bir kaynağın bildirim koymak.
SamB

3
Bir .manifestdosyanın çalıştırılabilir dosya içindeki bildirime göre önceliği vardı. Bugün, yürütülebilir .manifestdosyada yerleşik olan herhangi bir bildirim, herhangi bir harici dosyayı geçersiz kılar . XP'nin hangi servis paketinin değiştiğini hatırlamıyorum - sanırım SP2 idi.
Ian Boyd

8

Sadece çağrıları SetProcessDPIAware'e yönlendiren ve yönlendiren bir DLL dosyası yayınladım. DPI ölçeklendirmesini kod aracılığıyla devre dışı bırakan uygulamalar için bu hızlı ve kolay bir düzeltmedir (ikili düzeltme ekine kıyasla).

DPIMangler: Blog yazısı , kaynak kodu .


6

Bildirimi yine de düzenleyebilirsiniz, yalnızca .EXE dosyasında düzenlemelisiniz. Açık destek olan bir kaynak editörünü arayın. Temel desteğe sahip bir örnek, XN Kaynak Düzenleyici'dir.) Sadece HIGHDPIAWARE'den bahseden satırı bulup silin ve yürütülebilir dosyayı kaydedin.

Düzenlemeden önce yürütülebilir dosyanın bir kopyasını aldığınızdan emin olun!


"Aşağı yönde: Uygulamanın dijital imzasını geçersiz kılıyor."
Ian Boyd

0

Acaba ResizeEnable sizin için ne arıyor?

http://www.digitallis.co.uk/pc/ResizeEnable/


Hayır, pencereler zaten yeniden boyutlandırılabilir. Sorun, bestecinin gösterilecek pencereyi oluşturmasıdır. Şu anda, uygulamanın ölçeklendirilmesi gerekmediğini söylediği gibi, özel bir şey yapmıyor. Ama aslında pencere gelmez arttırılması gerekecektir.
Ian Boyd,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.