2010-06-10 5 views
1

나는 근본적으로 뭔가 빠져 있다고 생각합니다. 가능한 경우 알려주십시오.여기에 UseCompatibleTextRendering이 필요한 이유는 무엇입니까?

저는 VS2008을 사용하여 약간의 C++ WinForms 앱을 개발했습니다. 따라서 .NET 3.5 SP1을 사용하여 빌드됩니다. 제 개발 상자가 Win7입니다.

이 버전의 VStudio에서는 WinForms 컨트롤의 UseCompatibleTextRendering 속성의 기본값이 false입니다. 그리고 이것은 나에게 중요하지 않아야한다고 생각하지 않습니다. 사용자 지정 텍스트 또는 컨트롤 이 없습니다.

내 Win7 상자에서 응용 프로그램이 잘 돌아갑니다.

패키지를 .NET WinXP 데스크탑 중 하나에 패키지로 설치하면 버튼과 라벨이 잘 보이지 않습니다. 텍스트가 잘립니다.

UseCompatibleTextRendering을 true로 설정 한 다음 XP 상자에서 실행하면 텍스트가 단추와 레이블에 맞습니다.

제 질문은 : 이유가 무엇입니까? 설치시 .Net 3.5가 XP 상자에 저장되므로 응용 프로그램이 올바른 버전의 WinForms를 찾아 사용할 수 있어야합니다. 맞습니까?

나는이 상자에 내 앱 + .NET 3.5를 설치하기 전에 .NET이 전혀 없다는 점에 유의해야한다. Microsoft 자동 업데이트를받지 못합니다. 우리 IT 담당자가 패치와 업그레이드를 처리합니다.

[이런 종류의 일은 내가 만든 앱으로 전에 발생했습니다. 우리는 엔지니어링 기계에서 멋지게 보이고 작동합니다. 왜냐하면 우리가 그 기계를 유지 관리하고 최신 기술을 대부분 갖추고 있기 때문입니다. 기업용 박스에서 실행될 때는 대개 실행되지 않고 VCredist가 설치되어 있어야합니다. ]

위로 가기 : UseCompatibleTextRendering을 false로 설정하면 텍스트가 더 좋아 보이므로 가능한 경우이를 유지해야합니다. 나는 그 텍스트가 적합하지 않게 만드는 XP 상자에 무엇이 빠져 있는지 이해하고 싶다.

감사

S는

그것은 아마 스케일링 문제

답변

2

, XP의 기계는 다른 비디오 어댑터 DPI 설정이나 다른 시스템의 글꼴 크기를 가질 수있다. 크기 조정은 폼의 AutoScaleMode 및 컨테이너 컨트롤의 Font 속성을 "상속"하는지 여부에 따라 영향을받습니다. 속성 창에서 Font 속성이 굵은 글꼴이 아닌 경우에 적용됩니다. 스케일링이 양식에 속성을 작동하는지 확인하는

한 빠른 방법 :

protected: 
    virtual void OnLoad(EventArgs^ e) override { 
     this->Font = gcnew System::Drawing::Font(this->Font->FontFamily, 
      this->Font->SizeInPoints * 125/96); 
    } 

그것을 확장 할 수 있습니다. 아마 XP 컴퓨터에서 96/125로 축소됩니다.

+0

재미있는 점이 있습니다. 영향을받는 컨트롤의 글꼴 크기가 폼과 다릅니다. 글꼴이 더 큽니다. 실험에서 폼의 기본 글꼴을 더 큰 크기로 변경하려고 시도했습니다. 모든 것이 커졌지만 버튼/레이블 텍스트는 XP에서 잘리지 않았습니다. 제안을 지금 사용해보십시오. – HotOil

+0

개발 상자에서 코드를 사용하여 수동으로 폼을 확장하면 부작용이있는 확장 된 폼이 생성됩니다. 잘린 텍스트가있는 컨트롤은 폼의 패널에 있습니다. 폼을 확장 한 후에 패널이 나타나지 않습니다. 어디 있는지 확실하지 않고, 더 자세히 디버깅해야합니다. 그 외에도. AutoScaleMode는 폼의 "Font"로 설정됩니다. 나는 그것을 "DPI"로 바꾸었고 이제는 XP 상자에서 좋아 보인다. 이것은 좋은 소식이지만 .. 최종 해결책은 불확실한가요? 다른 상자에 시스템 글꼴 크기 문제가 있으면 어떻게합니까? 아무 문제가없는 것 같습니다. – HotOil

+1

글쎄, 스케일링은 불완전한 예술이다. 이것이 AutoScaleMode의 * 값이 2 개인 이유입니다. 그것은 차이를 만들기로되어 있지 않습니다, DPI를 변경하면 기본 글꼴 크기도 변경해야합니다. 사용중인 상자를 제외하고. 한숨. 모두 600 DPI 모니터를 구입합시다. –

관련 문제