소스코드리뷰(XVIII) 이미지리스트(ImageList)의 사용과 아이콘

[목차(도우미)]
Windows에서 이미지리스트(ImageList)의 사용과 파일 관련 아이콘의 문제점에 관하여

이미지리스트의 장점과 단점

윈도용 응용 프로그램에서 이미지리스트(ImageList.OCX) 컴포넌트를 사용하면 간단히 이미지를 리스트뷰(ListView)나 트리뷰(TreeView)에 아이콘 표시를 할 수 있다. 그러나 한가지 단점은 파일 시스템에서 아이콘을 ExtractIcon등의 함수를 써서 이미지리스트에 넣어두면 원래의 아이콘을 깨끗이 표시하지 못하고 그래데이션(Gradation) 부분 검게 처리되는 단점이 있다.

확인된 버전 : VB5, VB6, VB.NET(VB 2005, 2010), DELPHI

장점
사용자 추가 이미지를 쉽게 다룰 수 있다
단점
파일 시스템의 아이콘을 넣어두기에는 부적합하다

  파일 시스템의 아이콘이라고 하는 것은 각각의 응용 프로그램이나 확장자에 관련된 아이콘을 가르킨다. 윈도 NT등의 구 버전에서는 아이콘에 사용하는 색수(Color Depth)가 많지 않아서 그래데이션을 표현하지 않았지만 윈도 XP등에서는 아이콘에 표시 가능한 색수가 트루컬러가 되면서 그래데이션 표현이 많아졌다.

결론적으로 파일 시스템을 리스트뷰에 표시하고 관련 아이콘을 표시하고자 한다면 현재로서는 이미지리스트 컴포넌트를 사용하는 것은 부적합하다. 굳이 지저분한 아이콘을 표시하는 것을 감수할 수 있다면 써도 무방하다.

선인장

(선인장: 가시가 돋힌 선인장에도 언젠가는 꽃이 필 것이다.)  


파일 아이콘에 대한 대책

대책은 OS에서 제공하는 API함수를 구사해서 이미지리스트 컴포넌트가 아닌 시스템 이미지리스트를 취득하고 관련 아이콘을 리스트뷰에 그려주어야 한다. 대개는 32 픽셀 아이콘을 많이 쓰지만 시스템에서 큰 아이콘(48 픽셀 아이콘)을 사용할 경우에 LARGEICON은 자동적으로 48 픽셀 아이콘으로 그려진다. 그리고 아이콘을 선택했을 때의 반전 처리도 깨끗하게 되어서 망점처리로 보이지 않는다.

실제 소스코드의 예는 이미 공개된 자료가 있는데 그 소스코드에는 오른 클릭의 방법도 소개되어 있다.
검색 키워드는 vbexplorer.zip 로 찾아도 되고 http://btmtz.mvps.org/vbexplorer/ 의 주소에서도 공개 소스를 참조할 수 있다.
vbexplorer.zip에서 소개된 것은 VB5, VB6의 소스코드이다. VB.NET으로 번역하고 싶으면 번역해도 좋을 것이다.

by 금메달.아빠 on 2010. 9. 5. 21:44