2014-05-22 4 views
0

메인 폼에 두 개의 TJvImage 구성 요소가 있습니다. 하나는 부분적으로 투명한 PNG 파일에서 디자인 타임에로드됩니다. 다른 하나는 첫 번째와 앞에서보다 작습니다. 런타임에 부분적으로 투명한 다른 PNG 파일로로드됩니다.Delphi 2007 - PNG 파일에서 TJvImage를로드하면 투명성이 떨어집니다.

JvImage1.Picture.LoadFromFile ('Logo.png') ; 

JvImage1.Transparent가 TRUE로 설정됩니다. 문제는 간단합니다. 작은 이미지가 알파 채널을 무시하여 렌더링됩니다. 즉, 배경 이미지를 펀치 아웃합니다.

디자인 타임에 두 이미지를 모두로드 할 때 발생하지 않습니다. 두 가지 모두 양식에서 부분적으로 투명하게 표시되며 프로그램을 실행할 때 올바르게 표시됩니다.

실제 딜레마는 문제를 보여주기 위해 작성된 최소 테스트 프로그램이 이 아니지만이 문제를 나타내지 만 응용 프로그램 고유의 동일한 코드가 작동하지 않는다는 사실입니다.

동작에 영향을 줄 수있는 기본 폼에 대한 것이 있습니까?

+1

문제를 격리하는 것이 좋습니다. 실패 할 때까지 코드를 제거하십시오. dfm 파일을보십시오. Transparent를 True로 설정 한 이유는 무엇입니까? 이미지에 알파 채널이 있습니다. –

+0

투명성을 얻으려면'투명 '을 거짓으로 설정해야한다고 상상조차하지 못했습니다. 이제 알았어! (도움말에는 "투명도를 true로 설정하면 TImage 개체 뒤의 개체가 이미지의 배경을 통해 표시됩니다. 투명화를 false로 설정하면 이미지의 배경이 불투명 해집니다"). 불행히도 Transparent를 false로 설정해도 문제가 해결되지 않습니다. 프로젝트를 만들고 문제의 전체 내용을 붙여 넣으려고했는데 이미지가 잘 표시됩니다. 내 앞에 약간의 일이있다. – rossmcm

답변

1

TJvImage에 대해 동일한 지 알 수는 없지만 TImage의 투명 속성을 True로 설정하면 TImage가 TransparentColor로 모든 픽셀 렌더링을 건너 뜁니다. 투명한 색을 설정하지 않으면 왼쪽 하단 픽셀의 색이 사용됩니다. 그런 모드에서 TImage는 알파 채널을 가져 가지 않습니다. Infact 투명성은 TBitmap 타입의 이미지를 TImage로로드 할 때만 작동합니다.

나는 TJvImage가 아마도 비슷한 방식으로 작동한다고 생각합니다. 따라서 이미지를 올바르게 표시하려면 Transparent 속성을 False로 설정해야합니다. 이렇게하면 TJvImage가 그림 자체에 인코딩 된 알파 투명도를 사용하여 그림을 렌더링 할 수 있습니다.