Можно ли загрузить изображение JPG / PNG в TbitBtn или TSpeedButton? - PullRequest
1 голос
/ 28 июня 2019

Мне нужно отобразить изображение в кнопке, чтобы пользователю было визуально легче узнать, для чего кнопка, а не читать ее текст.

, насколько я могу судить, TBitBtn и TSpeedButton - это кнопки, которые могут отображать изображение, но я ничего о нем не знаю, и я хотел бы знать, возможно ли иметь .JPGили .PNG-файл и загрузите это изображение в кнопку, чтобы оно отобразилось.

Ответы [ 2 ]

4 голосов
/ 28 июня 2019

TBitBtn и TSpeedButton поддерживают только изображения BMP, но не JPG / PNG.Вам нужно будет преобразовать изображения JPG / PNG в BMP (что можно сделать в коде, загрузив изображения сначала в TJPEGImage / TPNGImage, а затем Assign()их к кнопке Glyph, которая является TBitmap).

В современных версиях Delphi TButton имеет Images свойство, которое можно назначить любому TCustomImageList, и вы можете добавлять PNG-изображения в стандартный TImageList или использовать сторонний PNG ImageList.

В противном случае вы можете создать собственную нарисованную владельцем кнопку для непосредственного рисования изображений в формате JPG / PNG.Получите из TButton и переопределите его метод CreateParams(), чтобы включить стиль BS_OWNERDRAW, а затем обработайте сообщение WM_DRAWITEM, чтобы нарисовать кнопкукак вы хотите (это то, что TBitBtn делает).

2 голосов
/ 28 июня 2019

Нет, вы не можете назначить файл ни одному из них.Если вы не знаете элемент управления, посмотрите в нем руководство: http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Buttons.TBitBtn и http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Buttons.TSpeedButton

Вы должны сделать это косвенно: загрузить файл в TBitmap, затем назначить егосвойство Glyph кнопки - руководство дает один пример http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/TBitBtnLayout_(Delphi)

...