RAD 스튜디오 10.3 리오에서 High DPI를 지원하는 이미지 리스트가 추가해, 컨트롤 내의 이미지들을 다양한 해상도를 통해 더욱 선명하게 표현할 수 있게 되었습니다.

 

High DPI

High DPI(일명 HiDPI)는 디스플레이에 몇 배 더 많아진 픽셀 수 만큼 몇 배로 더 선명하게 보여주는 표시방식입니다.

 

최근 고해상도 모니터들이 출시되어 FHD(1980X1080) 부터 QHD(2440X1680), UHD(3840X2160 이상) 해상도를 지원합니다.

윈도우에서 고해상도를 설정하는 경우 문제가 있습니다. 기존 애플리케이션의 크기가 너무 작게 표시되어 가독성이 나빠지게 됩니다.

 

해결방법은 2가지로, 디스플레이 설정에서 해상도를 낮추거나, 윈도우 배율을 높여 크게 표시하는 것입니다.

해상도를 낮추는 방법은 고해상도 모니터를 사용하는 의미를 감쇄시키는 것이기 때문에 결국 배율을 높여 표시하는 방식을 사용합니다.

display_scale.png

(설정 > 디스플레이 > 배율 및 레이아웃 > 텍스트, 앱 및 기타 항목의 크기 변경 또는 고급 배율 설정에서 배율을 조정할 수 있습니다.)

 

하지만, 또다른 문제가 있습니다. 배율을 높여 표시하게 되면 컨트롤과 글자등이 흐릿하게 표시될 것이고, 이 문제를 해결하기 위해 많아진 픽셀 수 만큼 선명하게 표시하는 기술이 바로 High DPI 입니다.

High DPI는 윈도우 8.1 부터 도입된 기술로 윈도우 UI(시작메뉴, 바탕화면, 탐색기 등)는 배율을 높이면 컨트롤, 아이콘, 글자 등이 선명하게 표시됩니다.

 

애플리케이션들도 High DPI를 직접 지원해야 합니다. 그렇지 않으면 높아진 배율에 맞게 화면이 흐릿하게 표시해 좋지않은 가독성을 제공하게 될 것입니다.

 

RAD 스튜디오는 10 시애틀(2015년 출시) 버전 부터 High DPI를 발빠르게 지원하고 있습니다. 프로젝트 옵션 설정(기본 적용됨)만으로 High DPI를 지원합니다. 즉, High DPI를 지원하지 않는 버전의 소스코드를 다시 빌드하는 것만으로 애플리케이션에 High DPI 기능을 적용할 수 있습니다.

폼(TForm)의 Scaled 속성(기본값 True)을 변경해 배율 적용을 변경할 수도 있습니다. VCL 내부 코드들은 High DPI 적용을 위해 전체적으로 배율설정을 곱한 크기로 그리도록 적용되었습니다.(일부 써드파티 컴포넌트 들의 경우 High DPI 적용 여부를 확인해야 하니다.)

 

10.3 리오에서는 버튼, 툴바, 팝업메뉴 등에 표함되는 이미지를 담는 이미지 리스트에 High DPI가 적용되어, UI 컨트롤, 글자 등에 더불어 이미지도 높은 해상도로 선명하게 표현하는 기술이 추가되었습니다.

High DPI 이미지 리스트는 TImageCollection과 TVirtualImageList 두가지 컴포넌트로 구현되었습니다.

TImageCollection

imagecollection.png

 

TImageCollection 컴포넌트는 이미지 목록별로 다양한 해상도의 이미지를 등록할 수 있는 컴포넌트입니다. 위 그림과 같이 Image Collection Editor 대화상자를 통해 다양한 해상도의 이미지를 등록, 편집, 삭제할 수 있습니다.

 

[Images]의 [Add] 버튼을 이용해 하나의 이미지 파일 또는 여러개의 이미지 파일을 선택 등록할 수 있습니다. 여러개의 이미지 파일을 선택한 경우 "Size Separator"로 지정된 문자로 파일명을 구분해 해상도별 이미지를 일괄 등록할 수 있습니다. 또는, [Selected Image]의 [Add] 버튼을 눌러 해상도별 이미지를 개별 등록할 수도 있습니다.

 

기존 이미지 리스트(TImageList)의 이미지 목록을 불러올 수 있습니다.

Loadfromexstingtimagelist.png

 

[Load Images from TImageList] 대화상자에서 이미지 리스트를 선택 해 불러오거나 여러 이미지 리스트의 이미지 목록을 병합(Merge)할 수 있습니다.

Loadfromexstingtimagelist2.png

 

TVirtualImageList

이미지 컬렉션(TImageCollection)에 등록된 다중해상도 이미지를 이미지리스트로 제공하기 위해 TVirtualImageList 컴포넌트를 사용합니다.

TVirtualImageList는 TCustomImageList를 상속받아 구현되었으며, 응용 프로그램이 구동되는 윈도우의 디스플레이 배율에 맞게 이미지 컬렉션의이미지를 제공하는 역할을 합니다.

virtualimagelist.png

 

기존의 이미지 리스트(TImageList)를 지정한 Images 속성에 가상 이미지 리스트(TVirtualImageList)를 설정할 수 있습니다.

ImagesProperty.png

 

High DPI가 적용된 이미지 리스트

HiDPIImageList.png

위의 그림은 각각 TImageList와 TVirtualImageList(+TImageCollection)을 적용한 툴바(TToolbar) 화면입니다.

100%, 150%, 225% 배율 적용 시 배율에 따라 적절한 해상도의 이미지로 선명하게 표현된 것을 확인할 수 있습니다.

 

 

 

10.3 리오의 업데이트 버전들

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 21689
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 20307
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 22356
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28103
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 29405
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 24730
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 45676
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 181226
154 [10.3 리오][업데이트 3] 엔터프라이즈 커넥터가 무상 제공됩니다 (엔터프라이즈, 아키텍트 사용 고객 한정) file 관리자 2019.11.22 671
153 윈도우 10 지원과 좋은 UX 구현을 위해 기억해야 할 점 관리자 2019.10.22 670
152 [RAD Studio 10.4 패치1 ] C ++ 디버깅과 누락 파일 패치 – 패치를 설치하는 새로운 방법! file 김원경 2020.06.01 668
151 모바일 앱 개발, 가장 좋은 선택은? 관리자 2021.03.18 659
150 프로젝트 경험을 통해 터득한 효과적인 마이그레이션 프로세스 file 험프리 2020.01.22 658
149 헬스케어 분야에서의 델파이 - 코로나에 맞서며 file 김원경 2020.04.29 657
148 [10.4 시드니 신기능] 델파이 10.4 런타임 라이브러리 향상 file 김원경 2020.05.28 651
147 [10.3 리오][업데이트1] Boost 라이브러리를 C++빌더 10.3.1부터 사용할 수 있습니다! 관리자 2019.05.16 639
146 이 달의 기술자료 - 2016년 09월 file 험프리 2016.08.25 639
145 [10.4 시드니 신기능] 겟잇 패키지 매니저(GetIt Package Manager) 개선 험프리 2020.05.21 638
144 VCL의 역할과 방향 - 마르코 칸투의 VCL 이야기! 관리자 2019.12.17 637
143 올 해의 기술자료 TOP 10 - 개발자들이 가장 많이 클릭한 기술자료는? 관리자 2018.10.24 635
142 RESTful 마스터-디테일 데이터를 사용하는 클라이언트 애플리케이션을 TRESTResponseDataSetAdapter를 사용하여 개발하기 file 험프리 2020.03.03 633
141 [10.3 리오][업데이트 2] C++ 코드인사이트 기능 업데이트 관리자 2019.08.23 632
140 [발표자료] 20151019 David I 초청 워크샵: 윈도우 애플리케이션 개발자를 위한 DeepDive! 관리자 2015.10.20 631
139 이 달의 기술자료 - 2018년 10월 file 험프리 2018.10.01 627
138 주요 OS 시장 점유율 - 윈도우와 안드로이드! file 관리자 2019.11.19 622
137 이 달의 기술자료 - 2018년 01월 험프리 2017.12.28 621
136 [10.3 리오] 기타 컴파일러, 데이터, RTL 개선사항 험프리 2018.12.06 620
135 이 달의 기술자료 - 2021년 04월 험프리 2021.03.25 618