2014-03-25 6 views
3

C#으로 Windows Forms 응용 프로그램을 개발하여 사무실에서 사용할 수 있습니다. 지금까지 앵커 링 및 자동 크기 조정 기능을 사용하면 컨트롤이 최대 크기 등의 기본 크기로 잘 정렬됩니다.Windows Form의 해상도/DPI를 높일 수 있습니까? (몇 가지 방법으로 컨트롤을 확장 할 수 있습니까?)

대형 투영 된 화면의 회의실에서 모양이 잘 보이지 않습니다. 텍스트가 너무 작아서 쉽게 읽을 수 없습니다.

우리는 우리의 컴퓨터에서 Windows 7을 실행하므로, 실험을 통해 디스플레이 렌더링을 100 %에서 150 %로 끌어 올렸습니다. 이로 인해 컨트롤의 텍스트가 흐리게 만들어져서 약간의 연구를 한 다음 Main() 메서드에 추가했습니다.

이것은 정말 잘 작동했습니다. 앱이 커지고 컨트롤이 크고 읽기 쉽고 모든 것이 잘 어울립니다. 유일한 문제는 디스플레이 렌더링을 변경하면 로그 아웃하고, 불편하며, 사용자가 실제로 그렇게하지 않는다는 것입니다. 컴퓨터는 100 %를 유지할 가능성이 있습니다.

응용 프로그램 내에서이 작업을 수행 할 수 있습니까? 나는 96 DPI에 이르기까지 응용 프로그램을 강요하는 것에 대해 많은 질문을 보았지만 120 또는 144 DPI로 강제 실행하는 것이 가능합니까?

아니면 같은 목표를 달성하기위한 다른 방법이 있습니까? 가능한 경우 큰 글꼴을 사용하여 별도의 "프리젠 테이션 모드"인터페이스를 만드는 것을 피하고 싶습니다.

+1

winforms 대신 WPF를 찾고 있다고 생각합니다. 기본적으로 해상도가 독립적입니다. 모든 문제는 WPF에서 전체 응용 프로그램을 'Viewbox'(2 줄의 XAML)로 래핑하여 해결할 수 있습니다. –

+0

@HighCore 불행히도,이 응용 프로그램은 우리가 내부적으로 사용하는 다른 응용 프로그램의 동반자가되어야하며, 이들 응용 프로그램은 winforms에서 수행되었으므로 winforms를 계속 사용해야합니다. – ohioDeveloper

+1

@HighCore 다음을 실행하여 원하는 효과에 가까운 것을 얻을 수 있음을 발견했습니다. 'this.SuspendLayout(); ' 'this.AutoScaleDimensions = new System.Drawing.SizeF (72F, 72F); ' 'this.Font = new System.Drawing.Font ("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))), ' 'this .PerformAutoScale(); ' – ohioDeveloper

답변

1

Windows Forms에서 DPI를 올바르게 사용하기위한 노력의 결과로 양식의 글꼴을 변경하는 훨씬 쉬운 경로를 찾았습니다.

컨트롤이 모두 글꼴에 의한 자동 크기 조절 (기본값)으로 설정된 경우 폼 단위로 시스템 글꼴을 재정의 할 수 있습니다.

this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 

일부 컨트롤은 폼의 글꼴에서 당기지 않는, 그러한 menustrips으로, 개별적으로 설정되어야 할 것이다.

menuStrip1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 

우리는 (14)과 가독성을 높이기 위해 15 메뉴에 대한 폼의 글꼴 크기를 변경하고, 표준 모드로 돌아가려면 다시 원래 값으로 변경되었습니다.

기본적으로 일부 컨트롤에서는 양식 글꼴을 무시하므로, 글꼴을 수동으로 구성하면 (예 : 텍스트를 굵게 또는 기울임 꼴로 만들기 등) 대부분의 컨트롤이 그렇지 않으면 컨트롤을 무시할 수 있습니다. 이 모든 인스턴스는 개별적으로 처리해야합니다.

관련 문제