Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med automatisk skalning kan ett formulär och dess kontroller, utformade på en dator med en viss bildskärmsupplösning eller teckensnitt, visas korrekt på en annan dator med en annan bildskärmsupplösning eller teckensnitt. Det säkerställer att formuläret och dess kontroller på ett intelligent sätt ändrar storlek så att de överensstämmer med interna fönster och andra program på både användarnas och andra utvecklares datorer. Automatisk skalning och visuella stilar gör det möjligt för Windows Forms-applikationer att upprätthålla en konsekvent look-and-feel jämfört med inbyggda Windows-applikationer på varje användares dator.
För det mesta fungerar automatisk skalning som förväntat i Windows Forms. Ändringar i teckensnittsschemat kan dock vara problematiska. Ett exempel på hur du löser detta finns i Så här gör du: Svara på ändringar i teckensnittsscheman i en Windows Forms-applikation.
Behov av automatisk skalning
Utan automatisk skalning visas ett program som är utformat för en visningsupplösning eller ett teckensnitt antingen för litet eller för stort när den upplösningen eller teckensnittet ändras. Om programmet till exempel är utformat med Tahoma 9-punkt som baslinje, visas det utan justering för litet om det körs på en dator där systemteckensnittet är Tahoma 12-punkt. Text element, till exempel rubriker, menyer, textruteinnehåll och så vidare, kommer att återges mindre jämfört med andra applikationer. Dessutom är storleken på användargränssnittselement (UI) som innehåller text, till exempel namnlisten, menyerna och många kontroller beroende på vilket teckensnitt som används. I det här exemplet visas dessa element också relativt mindre.
En liknande situation uppstår när ett program är utformat för en viss visningsupplösning. Den vanligaste visningsupplösningen är 96 punkter per tum (DPI), vilket motsvarar 100% visningsskalning, men högre upplösning visar stöd för 125%, 150%, 200% (som respektive är lika med 120, 144 och 192 DPI) och högre blir vanligare. Utan justering visas ett program, särskilt ett grafikbaserat, utformat för en upplösning antingen för stort eller för litet när det körs med en annan upplösning.
Automatisk skalning syftar till att lösa dessa problem genom att automatiskt ändra storlek på formuläret och dess underordnade kontroller enligt den relativa teckenstorleken eller visningsupplösningen. Windows-operativsystemet stöder automatisk skalning av dialogrutor med hjälp av en relativ måttenhet som kallas dialogenheter. En dialogenhet baseras på systemteckensnittet och dess relation till bildpunkter kan fastställas via funktionen GetDialogBaseUnitsWin32 SDK . När en användare ändrar det tema som används av Windows justeras alla dialogrutor automatiskt i enlighet med detta. Dessutom har Windows Forms stöd för automatisk skalning, antingen enligt standardsystemteckensnittet eller visningsupplösningen. Du kan också inaktivera automatisk skalning i ett program.
Försiktighet
Godtyckliga blandningar av DPI- och teckensnittsskalningslägen stöds inte. Även om du kan skala en användarkontroll med ett läge (till exempel DPI) och placera den i ett formulär med ett annat läge (teckensnitt) utan problem, men att blanda ett basformulär i ett läge och ett härlett formulär i ett annat kan leda till oväntade resultat.
Automatisk skalning i praktiken
Windows Forms använder följande logik för att automatiskt skala formulär och deras innehåll:
Vid designtillfället registrerar varje ContainerControl skalningsläget och den aktuella upplösningen i AutoScaleMode respektive AutoScaleDimensions.
Under körning lagras den faktiska upplösningen i egenskapen CurrentAutoScaleDimensions. Egenskapen AutoScaleFactor beräknar dynamiskt förhållandet mellan skaleringsupplösningen vid körtid och designtid.
När formuläret läses in, om värdena för CurrentAutoScaleDimensions och AutoScaleDimensions är olika, anropas metoden PerformAutoScale för att skala kontrollen och dess underordnade element. Den här metoden pausar layouten och anropar metoden Scale för att utföra den faktiska skalningen. Därefter uppdateras värdet för AutoScaleDimensions för att undvika progressiv skalning.
PerformAutoScale anropas också automatiskt i följande situationer:
Som svar på händelsen OnFontChanged om skalningsläget är Font.
När containerkontrollens layout återupptas och en ändring identifieras i egenskaperna AutoScaleDimensions eller AutoScaleMode.
Som antyds ovan, när en överordnad ContainerControl skalas. Varje kontroll ansvarar för att skala sina barn med hjälp av sina egna skalningsfaktorer och inte den från den överordnade containern.
Barnkontroller kan ändra sitt skalningsbeteende på flera sätt:
Egenskapen ScaleChildren kan åsidosättas för att avgöra om deras underordnade kontroller ska skalas eller inte.
Metoden GetScaledBounds kan åsidosättas för att justera gränserna som kontrollen skalas till, men inte skalningslogik.
Metoden ScaleControl kan åsidosättas för att ändra skalningslogik för den aktuella kontrollen.
Se även
.NET Desktop feedback