주력 제품으로 Winforms 응용 프로그램이있는 회사에서 일하고 있습니다. 우리는 최근 브랜딩 및 UI를 수정했습니다. 우리는 이제 Forms가 텍스트를 올바르게 표시하지 못하고 일부 컨트롤이 정렬되지 않았거나 가장자리에서 사라 졌다는 것을 알았습니다. 나 우리가 시간이 없어으로 다시 인수 분해의 가장 적은 DPI 인식이 응용 프로그램에 양식을하는어떻게 WinForms 응용 프로그램을 DPI 인식으로 만들 수 있습니까?
가능 그것입니다.
주력 제품으로 Winforms 응용 프로그램이있는 회사에서 일하고 있습니다. 우리는 최근 브랜딩 및 UI를 수정했습니다. 우리는 이제 Forms가 텍스트를 올바르게 표시하지 못하고 일부 컨트롤이 정렬되지 않았거나 가장자리에서 사라 졌다는 것을 알았습니다. 나 우리가 시간이 없어으로 다시 인수 분해의 가장 적은 DPI 인식이 응용 프로그램에 양식을하는어떻게 WinForms 응용 프로그램을 DPI 인식으로 만들 수 있습니까?
가능 그것입니다.
그것은 당신이 픽셀 좌표와 크기를 지정하지 않는 것이 중요합니다의 매니페스트 파일을 사용하는 것입니다. 이는 양식에 컨트롤을 "배치"할 때 디자이너가 수행하는 것 인 Control.Top
및 Control.Left
을 사용하지 않습니다.
Control.AutoSize
이 활성화되어 있어야합니다. 그러나 제어 위치가 여전히 고정되어 있으므로
AutoSize
을 활성화하면 레이아웃이 완전히 엉망이됩니다.
컨트롤을 동적으로 배치하려면 및 TableLayoutPanel
(크기는 AutoSize
으로 설정)과 같은 컨테이너 컨트롤을 사용할 수 있습니다. 자동으로 결정된 크기에 따라 그 안의 정상적인 컨트롤이 폼을 움직일 것입니다. 당신이 볼 수 있듯이
,이, 간단하지 않다 권리를 얻기 위해 약간의 경험이 필요하고 (다른 DPI 설정이 잘 작동 가상 시스템) 시험의 엄청난 금액을 필요로한다. 하지만 랩톱에서 뭔가 어리 석고 버그가 있으면 항상 괴롭기 때문에 꼭해야한다고 생각합니다.
FlowLayoutPanel. 핵심은 크기를 지정하는 것이 아니라 앵커링, 도킹 및 성장 특성입니다. –
가장 빠른 방법의 OnPaint를 무시하고 Graphics.DpiX 및 DpiY 속성을 사용하는 것입니다. 참고로 http://msdn.microsoft.com/en-us/library/ms701681(VS.85).aspx 만 추천 대신 SetDpiAware
WPF로 이동할 수는 있지만 빠르지는 않습니다. [윈폼 다른 DPI 레이아웃]의 – zerkms
가능한 중복 (http://stackoverflow.com/questions/1850915/winforms-different-dpi-layouts) – ChrisF
의 가능성 : 감사합니다 ... 일반 패널과 – Sam