2012-07-25 7 views
0

델파이가 잘 관리하지 못하는 한 가지는 이미지 "소스"파일과 이미지 구성 요소 사이의 링크입니다. 프로젝트 (여기 D2006하지만 모든 버전에 적용된다고 가정합니다).Delphi - "소스"이미지 파일과 내 프로젝트의 이미지 간의 링크를 자동으로 유지하고 싶습니다.

내 프로젝트에는 배경, 도구 모음 단추 모양, 눈 사탕의 다양한 비트 등 다양한 정적 이미지가 있다고 가정 해 봅니다. PNG/BMP 등의 해당 컬렉션이 있으며, 스크랩하거나 만들었습니다. 디자인 타임에 이미지 구성 요소에로드되었습니다.

한 가지 문제는 이미지 구성 요소를로드하는 데 사용 된 원본 이미지 파일을 3 개월 후에 자동으로 찾는 방법이없는 것입니다. 하나 이상의 이미지를 편집해야 할 때 문제가됩니다.

그래서 내가 무엇 정말처럼, 프로젝트의 빌드에 이미지 소스 파일을 포함하는 몇 가지 방법입니다. 나는. 빌드를 수행하면 모든 이미지 구성 요소가 먼저 소스에서 다시로드됩니다. 현재 PhotoShop 또는 이와 유사한 이미지로 일부 이미지를 수정할 때 변경된 이미지를 해당 이미지 컨테이너로 다시로드하는 데 길고 오류가 발생하기 쉬운 프로세스가 있습니다.

모든 이미지가 바인딩 된 리소스를 만들고 시작시 이미지 구성 요소를로드하는 코드를 추가하여 실행 가능합니까? 다른 사람들도이 문제가 있으며 어떻게 관리합니까?

답변

1

요구되는 것을 지원하는 표준 구성 요소는 없습니다. 그러나 Thany의 TPngImageList 구성 요소는 사용자 정의 문자열을 목록의 각 이미지와 연결하는 기능을 지원합니다.

그렇지 않으면 어떤 파일이 어떤 이미지에 속하는지 알기 위해 .rc 파일을 사용하여 컴파일 할 때 외부 이미지 파일을 응용 프로그램의 리소스로 컴파일 한 다음 이미지 리소스를 동적으로 구성 요소에로드 할 것을 제안합니다. 런타임에 디자인 타임 대신에. 그런 식으로 원하는 이미지 파일을 관리 할 수 ​​있습니다. 파일을 변경하면 자동으로 다음 컴파일시에 앱에 링크됩니다.

+0

감사합니다. @Remy. 그것이 내가해야 할 것이라고 생각한 것입니다. 주요 문제는 여러 크기 (크기 조정 도구 모음 단추의 경우)에 동일한 글리프가있는 부분입니다. master glyph 만 편집하고 배치 파일과 ImageMagick을 사용하여 다양한 다른 크기를 만든 다음 .RES로 컴파일합니다. – rossmcm

+0

그래서 문제가 무엇입니까? .rc 파일로이 작업을 수행 할 수 있습니다. 단순히 ImageMagick이 .rc 파일이 참조하는 다른 파일 이름에 글리프를 출력하게하십시오. 하나의 .rc 파일에서 여러 개의 외부 파일을 .res 파일 또는 응용 프로그램 자체로 컴파일 할 수 있습니다. 리소스가 고유 한 이름을 사용하는지 확인하십시오. 예를 들어,'toolbar_16.bmp'의 경우'TOOLBAR_16','toolbar_24.bmp'의 경우'TOOLBAR_24 '입니다. –

+0

네, 그게 계획이에요. ImageMagick은 잘 - 마술이다. – rossmcm

1

런타임에 동일한 이미지를로드하고 이러한 이미지를 버전 관리에 추가하여 유지 관리를 쉽게 할 수 있습니다. Lazarus 용 명령 줄 도구 (델파이에서도 비슷한 것을 찾을 수있을 것입니다)는 나중에 응용 프로그램에서 사용할 수있는 리소스에 파일을 저장할 수 있습니다.

0

ico 파일에서 이미지를로드하고 imagelist를 채운 다음 다양한 노드의 가상 문자열 트리에서 사용합니다. ico 파일을 쉽게 변경할 수 있습니다. /미카엘