Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met automatisch schalen kunnen een formulier en de besturingselementen, ontworpen op één computer met een bepaalde weergaveresolutie of een bepaald lettertype, op een andere computer met een andere weergaveresolutie of een ander lettertype worden weergegeven. Het zorgt ervoor dat het formulier en de bijbehorende besturingselementen op intelligente wijze worden aangepast aan systeemeigen vensters en andere toepassingen op zowel de computers van gebruikers als andere ontwikkelaars. Met automatische schaalaanpassing en visuele stijlen kunnen Windows Forms-toepassingen een consistent uiterlijk behouden in vergelijking met systeemeigen Windows-toepassingen op de computer van elke gebruiker.
Voor het grootste deel werkt automatisch schalen zoals verwacht in Windows Forms. Wijzigingen in lettertypeschema's kunnen echter problematisch zijn. Zie Antwoorden op wijzigingen in lettertypeschema's in een Windows Forms-toepassingvoor een voorbeeld van hoe u dit kunt oplossen.
Behoefte aan automatisch schalen
Zonder automatisch schalen wordt een toepassing die is ontworpen voor één weergaveresolutie of lettertype, te klein of te groot weergegeven wanneer die resolutie of dat lettertype wordt gewijzigd. Als de toepassing bijvoorbeeld is ontworpen met Tahoma 9-punt als basislijn, wordt deze zonder aanpassing te klein weergegeven als deze wordt uitgevoerd op een computer waarop het systeemlettertype Tahoma 12 punt is. Tekstelementen, zoals titels, menu's, inhoud van tekstvak, enzovoort, worden kleiner dan andere toepassingen. Bovendien zijn de grootte van gebruikersinterface-elementen die tekst bevatten, zoals de titelbalk, menu's en veel besturingselementen, afhankelijk van het gebruikte lettertype. In dit voorbeeld worden deze elementen ook relatief kleiner weergegeven.
Een analoge situatie treedt op wanneer een toepassing is ontworpen voor een bepaalde beeldschermresolutie. De meest voorkomende weergaveresolutie is 96 punten per inch (DPI), die gelijk is aan 100% schermschaal, maar een hogere resolutie geeft ondersteuning voor 125%, 150%, 200% (die respectievelijk gelijk zijn aan 120, 144 en 192 DPI) en hoger worden steeds vaker gebruikt. Zonder aanpassing zal een toepassing, met name een op afbeeldingen gebaseerde toepassing, die is ontworpen voor één resolutie, te groot of te klein worden weergegeven wanneer deze op een andere resolutie wordt uitgevoerd.
Automatisch schalen probeert deze problemen op te lossen door het formaat van het formulier en de kindbesturingselementen automatisch aan te passen op basis van de relatieve tekengrootte of weergaveresolutie. Het Windows-besturingssysteem ondersteunt het automatisch schalen van dialoogvensters met behulp van een relatieve maateenheid met de naam dialoogvensters. Een dialoogvenstereenheid is gebaseerd op het systeemlettertype en de relatie met pixels kan worden bepaald via de Win32 SDK-functie GetDialogBaseUnits. Wanneer een gebruiker het thema wijzigt dat door Windows wordt gebruikt, worden alle dialoogvensters automatisch aangepast. Daarnaast ondersteunt Windows Forms automatisch schalen op basis van het standaardsysteemlettertype of de weergaveresolutie. Optioneel kan automatisch schalen worden uitgeschakeld in een toepassing.
Waarschuwing
Willekeurige combinaties van DPI- en lettertypeschaalmodi worden niet ondersteund. Hoewel u een gebruikersbesturingselement met één modus (bijvoorbeeld DPI) kunt schalen en in een formulier kunt plaatsen met een andere modus (Lettertype) zonder problemen, kan het combineren van een basisformulier in de ene modus en een afgeleid formulier in een andere leiden tot onverwachte resultaten.
Automatisch schalen in actie
Windows Forms gebruikt de volgende logica om formulieren en hun inhoud automatisch te schalen:
Tijdens het ontwerp registreert elke ContainerControl respectievelijk de schaalmodus en de huidige resolutie in de AutoScaleMode en AutoScaleDimensions.
Tijdens runtime wordt de werkelijke resolutie opgeslagen in de eigenschap CurrentAutoScaleDimensions. De eigenschap AutoScaleFactor berekent dynamisch de verhouding tussen de uitvoerings- en ontwerptijdschaalresolutie.
Wanneer het formulier wordt geladen, als de waarden van CurrentAutoScaleDimensions en AutoScaleDimensions verschillen, wordt de PerformAutoScale-methode aangeroepen om de controle en zijn onderliggende elementen te schalen. Deze methode onderbreekt de indeling en roept de Scale methode aan om de werkelijke schaalaanpassing uit te voeren. Daarna wordt de waarde van AutoScaleDimensions bijgewerkt om progressief schalen te voorkomen.
PerformAutoScale wordt ook automatisch aangeroepen in de volgende situaties:
Als reactie op de OnFontChanged-gebeurtenis wanneer de schaalmodus Fontis.
Wanneer de indeling van het containerbesturingselement wordt hervat en er een wijziging wordt gedetecteerd in de eigenschappen AutoScaleDimensions of AutoScaleMode.
Zoals eerder aangegeven, wordt een ouder ContainerControl geschaald. Elk containercontrole is verantwoordelijk voor het schalen van zijn kinderen met behulp van zijn eigen schaalfactoren, en niet van de bovenliggende container.
Kinderbesturingselementen kunnen hun schaalgedrag op verschillende manieren wijzigen:
De eigenschap ScaleChildren kan worden overschreven om te bepalen of de kinderbesturingselementen al dan niet moeten worden geschaald.
De methode GetScaledBounds kan worden overschreven om de grenzen aan te passen waarnaar het besturingselement wordt geschaald, maar niet de schaallogica.
De methode ScaleControl kan worden overschreven om de schaallogica voor het huidige besturingselement te wijzigen.
Zie ook
.NET Desktop feedback