높은 DPI 설정에서 WinForms 앱을 올바르게 표시하는 데 문제가 있습니다. 다양한 웹 사이트를 확인한 후 WinForms에 모두 올바른 AutoScaleMode가 있습니다. 이 설정을 DPI 및 글꼴 설정했습니다. 그러나 높은 DPI 설정 (예 : 125 %)을 사용하면 양식이 항상 하단 근처에서 잘릴 수 있습니다.DPI로 정확하게 WinForms를 확장하는 데 문제가 있습니다
일부 코드를 추가하여 양식이로드 될 때 AutoScaleMode를 DPI로 설정하면 폼이로드 될 때 AutoScaleDimensions가 120,120이고 CurrentAutoScaleDimensions도 120,120 인 것으로 나타납니다. Form.designer.cs 파일에는 AutoScaleDimension을 96,96으로 설정하는 줄이 있습니다.
AutoScaleDimension 올바르게 새로운 System.Drawing.SizeF (6 층, 13F)로 설정되어 내가 글꼴로 AutoScaleMode를 설정하면, 나는 디자이너에서 볼 수있지만 폼이로드가 AutoScaleDimension 및 CurrentAutoScaleDimension 모두 8 층으로 설정된 경우, 16F.
이 응용 프로그램은 일부 WPF와 WinForms를 혼합하여 WPF 화면이 먼저 나타납니다. 따라서 DPI Scaling in .Net 3.5 in Mixed WinForms and WPF Application을 기반으로 응용 프로그램의 TextFormattingMode를 설정하고 "표시"하려면 먼저 표시되는 WPF 화면을 설정했지만 아무런 효과가 없습니다.
저는 솔직히이 문제의 원인을 놓치지 않았습니다. 런타임에 DPI를 감지하여 프로그래밍 방식으로 내용의 크기를 조정하는 코드를 추가 할 수는 있지만이를 수행하지 않아도됩니다. AutoScaleMode (및 관련) 속성은이를 자동으로 처리합니다. 그렇다면이 문제를 일으킬 수있는 다른 원인은 무엇입니까?
125 %는 "높은 DPI"가 아닙니다. 매니페스트에 설정되지 않은 경우에도 런타임에 높은 DPI 인식 플래그를 설정하기 때문에 WPF는 확실히 영향을 미칩니다. WinForms는 스케일링을 수행해야하는지 또는 OS가 자동으로 그렇게 할지를 혼동 할 수 있습니다. –
벤, 미안, "더 높은 DPI"가 더 정확할 수도 있습니다. WPF 화면을 먼저 표시하지 않도록 앱을 변경 한 후에도 문제가 지속 되었기 때문에 좀 더 자세하게 살펴볼 필요가 있습니다. – WarnerYoung
현대적인 % 기반 설정은 전체 높은/낮은 것을 혼란스럽게 만듭니다. 큰 글꼴의 경우 "인치당 도트 수"가 낮습니다. 구식 DPI 설정은 높은 글꼴에 사용되는 숫자가 낮을수록 최신 버전의 Windows는 표준 DPI로 가정하고 글꼴 크기 비율을 사용하므로 높은 글꼴에 더 높은 값이 사용됩니다. 일반적으로 높거나 낮은 수치가 아닌 실제 수치를 사용하는 것이 덜 혼란 스럽습니다. –