다음을 통해 공유


필요할 때만 호출되는 ScaleControl

크기 조정은 일반적으로 애플리케이션이 SystemAware 또는 PerMonitorV2 모드에서 실행되고 모니터에 앱이 설계된 컴퓨터와 다른 사용자 지정 DPI 설정이 있는 경우에만 필요합니다. 이러한 시나리오에서 Windows Forms 런타임은 모니터의 사용자 지정 DPI 설정을 기반으로 배율을 계산하고 새 배율을 사용하여 ScaleControl(SizeF, BoundsSpecified)를 호출합니다. 성능을 개선하기 위해 이제 계산된 배율 인수가 1.0F가 아닌 경우(즉, 배율 조정이 필요한 경우)에만 ScaleControl이 호출됩니다. 이 변경으로 인해 앱이 ScaleControl을 재정의하고 재정의에서 사용자 지정 작업을 수행하는 경우 앱이 중단될 수 있습니다.

도입된 버전

.NET 6 서비스 6.0.101

이전 동작

.NET 6 GA 릴리스 및 이전 버전에서는 애플리케이션의 컨테이너 컨트롤에서 PerformAutoScale()이 호출될 때마다 가상 공용 API ScaleControl(SizeF, BoundsSpecified)가 호출되었습니다. 즉, 크기 조정이 필요한지 여부에 관계없이 레이아웃이나 글꼴이 변경될 때마다 메서드가 호출되었습니다.

새 동작

.NET 6 서비스 릴리스부터 ScaleControl(SizeF, BoundsSpecified)는 양식이나 컨트롤의 크기를 조정해야 하는 경우에만 호출됩니다. Windows Forms 런타임은 모니터의 사용자 지정 DPI 설정과 애플리케이션이 설계된 모니터의 DPI 설정을 기반으로 배율을 계산합니다. ScaleControl(SizeF, BoundsSpecified)는 배율 인수가 배율 조정이 필요함을 나타내는 경우에만 호출됩니다.

범주 변경

이 변경 내용은 원본 호환성에 영향을 미칩니다.

변경 이유

이러한 변경은 성능을 개선하고 불필요한 레이아웃을 피하기 위해 이루어졌습니다.

코드가 이러한 재정의 가능한 메서드에서 크기 조정되지 않는 사용자 지정 작업을 수행하는지 확인합니다.

영향을 받는 API