mirror of
https://github.com/adafruit/Adafruit-GFX-Library.git
synced 2026-10-26 22:10:52 +00:00
Make Adafruit_GFX_Button::drawButton work with custom fonts by using getTextBounds to obtain the text bounds.
This commit is contained in:
1 parent
126007f2c5
commit
4e46790eda
1 file changed
+10
-3
+10
-3
@@ -1674,6 +1674,8 @@ void Adafruit_GFX_Button::initButtonUL(Adafruit_GFX *gfx, int16_t x1,
|
||||
/**************************************************************************/
|
||||
void Adafruit_GFX_Button::drawButton(bool inverted) {
|
||||
uint16_t fill, outline, text;
|
||||
int16_t x, y;
|
||||
uint16_t w, h;
|
||||
|
||||
if (!inverted) {
|
||||
fill = _fillcolor;
|
||||
@@ -1688,11 +1690,16 @@ void Adafruit_GFX_Button::drawButton(bool inverted) {
|
||||
uint8_t r = min(_w, _h) / 4; // Corner radius
|
||||
_gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill);
|
||||
_gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline);
|
||||
|
||||
_gfx->setCursor(_x1 + (_w / 2) - (strlen(_label) * 3 * _textsize_x),
|
||||
_y1 + (_h / 2) - (4 * _textsize_y));
|
||||
_gfx->setTextColor(text);
|
||||
_gfx->setTextSize(_textsize_x, _textsize_y);
|
||||
// System font is drawn from the upper left, but custom fonts are
|
||||
// drawn from the lower left. Adjust by the Y returned from getTextBounds().
|
||||
_gfx->getTextBounds(_label, _x1, _y1, &x, &y, &w, &h);
|
||||
_gfx->setCursor
|
||||
(
|
||||
_x1 + (_w / 2) - (w / 2),
|
||||
_y1 + (_h / 2) - (h / 2) + (_y1 - y)
|
||||
);
|
||||
_gfx->print(_label);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user