TButton с прозрачным изображением PNG и эффектом свечения - PullRequest
1 голос
/ 26 января 2011

Я использую Delphi XE и пытаюсь обновить старую кодовую базу Delphi. Первоначально программное обеспечение было разработано с использованием Delphi 7 и использовало взломанную версию TPNGButton, написанную Джонатаном Хоскингом в 2001 году. TPNGButton поддерживала прозрачность и эффект свечения. К сожалению, когда проект был перенесен на Delphi XE, все изображения были растянуты, чтобы заполнить область всей кнопки.

Я пытаюсь создать аналогичную кнопку с TButton, но я бью стену. Я создал новый тестовый проект и добавил TButton и TImageList с изображением PNG. Я добавил этот список изображений в свойство Image кнопки и выбрал правильный ImageIndex. Это привело к появлению кнопки с правильным изображением, но изображение слишком маленькое (16x16 пикселей).

Я попытался исправить проблему с размером, изменив размер TImageList, но после этого я вообще не могу видеть изображение, даже если я ввожу предыдущие значения. Конечно, даже в самой последней версии Delphi GUI designer отсутствует поддержка отмены, поэтому мне нужно удалить список изображений и добавить новый список изображений, чтобы восстановить изображение для кнопки.

Есть ли лучший способ получить нужную кнопку, или я должен сам ее кодировать или попытаться исправить взломанную реализацию кнопки TPNGB? Конечно, это не может быть лучшим способом для разработки GUI с Delphi в 2011 году?

Ответы [ 2 ]

4 голосов
/ 26 января 2011

TAdvGlowButton не является бесплатным, но это именно такая кнопка.

Пакет TMS Component стоит заплатить, если вы хотите рабочую ленту.

См. Также rkGlassButton , который является бесплатным.

0 голосов
/ 12 ноября 2012

Delphi XE растягивает изображение при рисовании на холсте.Растягивания можно избежать, всегда рисуя полноразмерное изображение с правильной X-позицией.Все пиксели за пределами холста автоматически обрезаются, и появляется правильный глиф.Измените инструкцию case в методе Paint объекта TPngButton следующим образом:

     Case EtatBtn of
       0: FPngImg.Draw(Canvas,Rect(0,0,4 * width, Height)); // Normal
       1: FPngImg.Draw(Canvas,Rect(-Width,0,3 * width, Height)); // Mouse Entered
       2: FPngImg.Draw(Canvas,Rect(-(Width * 2),0,2*width,Height)); // Pressed
       3: FPngImg.Draw(Canvas,Rect(-(Width * 3),0,width,Height)); // Disabled
     end; //case
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...