Delphi: 32-разрядное изображение не отображается правильно в форме стекла - PullRequest
2 голосов
/ 21 июля 2011

У меня есть изображение PNG (32-битное) в TImage. Форма имеет стеклянную рамку. Фон изображения черный, не прозрачный. Как это исправить?

Delphi 2010.

Спасибо.

Ответы [ 2 ]

7 голосов
/ 21 июля 2011

В качестве обходного пути вы можете изменить биты вашего png-изображения на 32.

Проверьте этот пример

левое изображение представляет собой PNG из 8 бит, а другое - из 32 бит.

enter image description here

0 голосов
/ 21 июля 2011

Вы должны забыть о TImage, так как он не справится с блитом. Вам нужно использовать GDI +, чтобы вручную нарисовать изображение в вашей форме. Это только из-за "стакана". Если вы оставите это до TImage (или фактически TGraphic, отображаемого в нем!), «Фон» (стекло) будет скопирован в память, и на него будет скомпонован прозрачный рисунок (png?), И он будет стерт он форма. К сожалению, «фон» (стекло) станет черным, когда вы вернете его назад.

Итак, используйте GDI + (Google it) и blt, используя bitmap.handle. Убедитесь, что растровое изображение прозрачно (то есть 32 бита и установлены соответствующие свойства).

То же самое со шрифтами на стекле, кстати. Вы должны рисовать вещи самостоятельно (может быть, из пользовательского компонента?). Вы можете найти несколько компонентов, которые уже делают это, хотя ... Как http://development.mwcs.de/glowlabel.html.

...