Jak zmusić aplikację do skalowania w wysokiej rozdzielczości?
Udawaj, że istnieje aplikacja, której twórcy zamanifestowali ją jako świadomą wysokiej rozdzielczości, kiedy tak naprawdę nie jest. Jak wymusić skalowanie dpi?
Udawaj, że istnieje aplikacja, w której Microsoft zastosował
HighDpiAware
podkładkę kompatybilności, gdy aplikacja tak naprawdę nie jest. Jak wymusić skalowanie dpi?
Jak zmusić system Windows do zastosowania skalowania dpi w aplikacji?
Edycja: Co to jest skalowanie w wysokiej rozdzielczości?
Nie wszyscy użytkownicy korzystają z systemu Windows o rozdzielczości 96dpi. Nie każdy przycisk powinien mieć 75 x 23 pikseli, nie każdy pasek narzędzi ma 25 pikseli wysokości i nie każdy glif widoku drzewa ma wymiary 16 x 16 pikseli. Jeśli użytkownik wybrał inne ustawienie dpi dla systemu Windows, musisz odpowiednio skalować wszystko.
Problem polega na tym, że prawie żaden programista nie wykonuje swojej pracy, ładnie obsługując ustawienia wysokiej rozdzielczości. W najlepszym razie wszystko pozostanie „tego samego rozmiaru”, co oznacza, że każdy wygląda na malutki . W najgorszym przypadku formularze są niepoprawnie rozmieszczone, z obciętym tekstem i niewidocznymi kontrolkami.
Począwszy od systemu Windows Vista i wykorzystując moc kompozycji pulpitu, Microsoft zrezygnował z pracy programistów, a teraz okłamuje aplikację. Informują aplikacje, że użytkownik działa w rozdzielczości 96dpi. Następnie system Windows używa karty graficznej i kompozycji pulpitu do skalowania formularzy.
Pro: zawartość formularza będzie przyjemnie czytelna.
Con: wszystko będzie nieco rozmyte.
Ta funkcja „skalowania w wysokiej rozdzielczości” działa tylko według uznania użytkownika i wymaga:
- Windows Vista lub nowszy
- Kompozycja pulpitu do włączenia
- użytkownik wyłączy „Użyj skalowania stylu Windows XP”
- użytkownik nie wyłącza skalowania aplikacji
Jako programista możesz zrezygnować ze skalowania w wysokiej rozdzielczości; jeśli dołożyłeś starań, aby poprawnie napisać aplikację i wiesz, że odpowiednio poradzisz sobie z wysoką rozdzielczością. Użytkownik rezygnuje z tego skalowania, dodając wpis manifestu do pliku wykonywalnego, deklarując, że jest „ świadomy wysokiej rozdzielczości ”.
Pytanie, w jaki sposób dostosować aplikację do preferencji użytkownika (w tym czcionki, rozmiaru czcionki i ustawienia dpi), jest pytaniem stack overflow
. Podobnie jak składnia wpisu manifestu deklarującego „ świadomość wysokiej rozdzielczości ”.
To pytanie, dotyczące superużytkownika , brzmi: jak zignorować programistę, który poszedł naprzód i dodał wpis manifestu w wysokiej rozdzielczości, kiedy w rzeczywistości aplikacja nie jest świadoma w wysokiej rozdzielczości. Kazali Windowsowi wyłączyć skalowanie, ale tak naprawdę nie przetestowali aplikacji. Istnieje oprogramowanie z wpisem manifestu „rozpoznawanie wysokiej rozdzielczości”, a teraz aplikacja nie nadaje się do użytku pod „dużymi czcionkami” (np. 120dpi).
źródło
Odpowiedzi:
Hmm Moją sugestią byłoby edytowanie manifestu i usunięcie niepoprawnej deklaracji. I nie zapomnij o tym zaradzić deweloperowi, jak możesz!
Edycja: Zauważ, że powinno być możliwe po prostu umieszczenie manifestu obok pliku wykonywalnego, np. Dla
foo.exe
, aby umieścić manifestfoo.exe.manifest
. Zobacz artykuł MSDN (zajrzyj do sekcji o nazwie „Składnia nazwy pliku”).źródło
.manifest
plik miał pierwszeństwo przed manifestem w pliku wykonywalnym. Obecnie każdy manifest wbudowany w plik wykonywalny przesłania dowolny.manifest
plik zewnętrzny . nie pamiętam, który dodatek Service Pack XP to zmienił - myślę, że to był SP2.Właśnie wypuściłem bibliotekę DLL, która przechwytuje i przekierowuje połączenia do SetProcessDPIAware. W przypadku aplikacji, które wyłączają skalowanie DPI za pomocą kodu, jest to szybka i łatwa poprawka (w porównaniu z łataniem binarnym).
DPIMangler: post na blogu , kod źródłowy .
źródło
Nadal możesz edytować manifest, wystarczy go edytować w samym pliku .EXE. Poszukaj edytora zasobów z obsługą manifestów. Przykładem podstawowej obsługi jest XN Resource Editor.) Po prostu znajdź i usuń wiersz, który wspomina HIGHDPIAWARE i zapisz plik wykonywalny.
Pamiętaj jednak o zrobieniu kopii pliku wykonywalnego przed jego edycją!
źródło
Zastanawiam się, czy ResizeEnable jest tym, czego szukasz?
http://www.digitallis.co.uk/pc/ResizeEnable/
źródło