작은 응용 프로그램을 개발하고 있습니다. 나는 AutoScaleMode = Font를 사용하려고 시도하고 하나만 제외하고 모든 내 의도에 대한 매력처럼 작동합니다. 일부 특정 컨트롤에 굵은 텍스트가 필요하지만 폰트 크기가 변경되면 autoscale을 사용하지 마십시오.C# AutoScaleMode 글꼴, 굵게는 조절되지 않습니다.
컨트롤의 기본 글꼴을 변경하지만 AutoScale을 나머지 컨트롤로 변경하는 것이 가능합니까? 사전
작은 응용 프로그램을 개발하고 있습니다. 나는 AutoScaleMode = Font를 사용하려고 시도하고 하나만 제외하고 모든 내 의도에 대한 매력처럼 작동합니다. 일부 특정 컨트롤에 굵은 텍스트가 필요하지만 폰트 크기가 변경되면 autoscale을 사용하지 마십시오.C# AutoScaleMode 글꼴, 굵게는 조절되지 않습니다.
컨트롤의 기본 글꼴을 변경하지만 AutoScale을 나머지 컨트롤로 변경하는 것이 가능합니까? 사전
에서
덕분에 당신은 아마 그것을 할 의도되지 않은 일을 할 글꼴 크기 조정을 사용하고 있습니다. 대상 컴퓨터의 다른 비디오 DPI를 보완하도록 설계되었습니다. 그리고 네, 도 양식의 글꼴 속성을 변경하여 양식을 rescale 수 있습니다. 하지만 부모의 글꼴을 "상속하지"않는 컨트롤을 사용하면 문제가 생길 수 있습니다. Font 속성을 직접 업데이트해야합니다.
이렇게하면 자동으로 컨트롤을 뒤집어서 상위 글꼴을 상속하지 않는 컨트롤 만 업데이트해야합니다. 이것은 잘 작동 :
public static void ScaleFonts(Control ctl, float multiplier) {
foreach (Control c in ctl.Controls) ScaleFonts(c, multiplier);
if (ctl.Parent == null || ctl.Parent.Font != ctl.Font) {
ctl.Font = new Font(ctl.Font.FontFamily,
ctl.Font.Size * multiplier, ctl.Font.Style);
}
}
샘플 사용 :
private void Form1_Load(object sender, EventArgs e) {
ScaleFonts(this, 1.25f);
}
을 엉망 레이아웃을 받고,이 일을하면서 가능한 고장 모드 레이아웃 이벤트를 트리거합니다. 이유를 설명하기가 어렵습니다. 이것을 해결하려면 Suspend/ResumeLayout()을 호출해야 할 수도 있습니다.