2017-12-02 5 views
0

SWT (또는 JFace)는 기존 유닛을 확장 된 대응 유닛으로 변환하기위한 대중적인 편의 방법이 있습니까? DPIUtil 클래스에 대한 언급이 있지만 내부 네임 스페이스의 일부입니다.위젯 크기 조정을 위해 SWT의 Hi-DPI 지원을 어떻게 활용합니까?

편리한 방법이 없다면 줌 레벨에 액세스 할 수있는 확실한 방법이 있습니까? Device#getDeviceZoom()이 있지만 보호되어 있습니다. Device#getDPI()이 공개되어 있으므로 유용 할 수 있습니다. 그것은 스케일링을 고려해야합니까 아니면 순진하고 DPI가 모든 것에 대해 96이라고 선언합니까?

좀 패널에 기본 크기 힌트를 적용하고있어 나는 그들을 고려 설정 모니터 확장을하고 싶습니다. 예 : 일반 디스플레이에서 기본값을 300px로 지정하고 150 %로 조정하면 450px로 계산됩니다. 계산은 분명 간단하지만 승수가 필요합니다.

참고 : SWT 특별히 이미지와이 문제를 처리하는 클래스를 제공하기 때문에 내 앞의 질문 How do you utilize SWT's Hi-DPI support for icons?에서 관련이 있지만 다릅니다.

+0

일반적으로 필요하지 않습니다. 300px의 크기를 지정하면 150 크기의 장치에서 SWT에 의해 자동으로 450px로 조정됩니다 (사용자가 제공 한 150 개의 조정 된 이미지가 사용됩니다). iMac은 2 개의 화면을 갖게됩니다. 즉, 5k 화면은 200으로 조정되고 2,5k 화면은 조정되지 않습니다. SWT 앱은 둘 다 동일한 크기로 나타납니다. –

+0

@ greg-449 나는 그것이 자동으로 변환된다는 것을 몰랐다. SWT는 어딘가에, 또는 대부분의 구현이 고수하는 미등록 기능 중 하나를 문서화합니까? SWT로 DPI 스케일링에 관한 포괄적 인 정보를 찾을 수 없었습니다. – cpburnz

+0

정말 SWT가 아닙니다. OS입니다 (최소한 macOS에서 작동하는 방식). OS는 크기를 조정하고 더 높은 해상도로 글꼴을 렌더링하며 가능한 경우 고해상도 이미지를 사용합니다. 따라서 프로그램은 고해상도 이미지를 제공하는 것 이외의 다른 것을 할 필요가 없습니다. –

답변

1

나는 규모 (줌) 인자를 결정하기위한 DPIUtil 이외의 아무것도 발견하지 않았습니다.

하지만 일반적으로이 정보가 필요하지 않습니다. 300px의 크기를 지정하면 150 크기의 장치에서 SWT에 의해 자동으로 450px로 조정됩니다 (사용자가 제공 한 150 개의 조정 된 이미지가 사용됩니다). 2 개의 화면이있는 iMac이 있습니다. 즉, 5k 화면은 200으로 조정되고 2.5k 화면은 조정되지 않습니다. SWT 앱은 동일한 크기로 표시됩니다.

스케일링

실제로는 (적어도 그게 맥 OS에서 작동하는 방법이다)를 OS가 아닌 SWT에서 이루어집니다. OS는 크기를 조정하고 더 높은 해상도로 글꼴을 렌더링하며 가능한 경우 고해상도 이미지를 사용합니다. 따라서 프로그램은 고해상도 이미지를 제공하는 것 이외의 다른 것을 할 필요가 없습니다. 확대 표시에 대해 모르더라도 오래된 프로그램은 여전히 ​​합리적인 크기로 표시

이 방법.

관련 문제