1,8" TFT - Text zentrieren

Hallo.

Hat jemand einen Geheimtip wie man bei einem 1,8" TFT (dieses) Text zentrieren kann. Eine Funktion scheint es in der Adafruit Library nicht zu geben. Aber vielleicht gibt es einen Trick?

Hallo,
gibt es! Kopfrechnen. Ein Buchstabe hat 6 Pixel Breite. "Kopfrechnen" hat 11 Buchstaben zu 6 Pixel.
Das sind 66 Pixel. Das Display hat 128 Pixel in der Breite.
128 Pixel Breite minus 66 Kopfrechnen, gleich 62 Pixel.
Das sind für jeden Einzug, recht/links 31 Pixel.
Du fängst also bei Pixel X=32 an zu schreiben. Kopfrechnen ist zentriert.
Gruß und Spaß
Andreas

oder Das hier
Dann brauchst Du Dich um das ganze Zeugs nicht kümmern

Hallo SkobyMobil.
Danke für deine schnelle Antwort. So weit war ich schon (mit einem kleinen Schusselfehler). Aber ganz so einfach ist es leider nicht. Was ist mit der Font Size? Ich nutze die Standardfont mit Größen von 2 bis 5. 6px scheint bei Size 1 zu passen. Kannst Du mir die Pixelbreiten der anderen Fonts noch sagen? :slight_smile:

Hallo,
"Kannst Du mir die Pixelbreiten der anderen Fonts noch sagen?"

Sonst hast Du keine Probleme? Ich weiß nicht, was für Fonts Du nutzt.
Ich habe immer ein "AB" geschrieben. Dann mit der Lupe die Pixel zählen und notieren.
"W" mußt Du extra auszählen. Ist ein mühseeliges Geschäft.

Du kannst auch immer ein ganze Zeile schreiben:
print (" ");
print (" Kopfrechnen ");

Gruß und Spaß
Andreas

Habs rausgefunden. Bei der Standardfont (der Adafruit Library) scheint es sehr einfach zu sein: Font Size * 6

Im ganzen sieht es dann so aus:

void refresh_display_datetime(DateTime now, float t, float h) {
  //String Month[] = {"", "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
  String Month[] = {"", "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "Juli", "Dezember"};
  
  String ShowText = "";
  
  //tft.fillScreen(ST7735_BLACK);
  
  ShowText = String(now.day());
  tft.setCursor( ( ( 160 - (ShowText.length() * 42)) / 2 ) , 10);
  tft.setTextSize(7);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextWrap(false);
  tft.print(ShowText);
  
  ShowText = String(Month[int(now.month())]);
  tft.setCursor( ( ( 160 - (ShowText.length() * 18)) / 2 ) , 65);
  tft.setTextSize(3);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextWrap(false);
  tft.print(ShowText);
  
  ShowText = String(now.year()); 
  tft.setTextSize(2);
  tft.setCursor( ( ( 160 - (ShowText.length() * 12)) / 2 ) , 85);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextWrap(false);
  tft.print(ShowText);
  
  ShowText = "Temperatur: " + String(t) + " C"; 
  tft.setCursor( ( ( 160 - (ShowText.length() * 6)) / 2 ) , 110);
  tft.setTextSize(1);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextWrap(false);
  tft.print(ShowText);
  
  ShowText = "Luftfeuchte: " + String(h); 
  tft.setCursor(( ( 160 - (ShowText.length() * 6)) / 2 ), 120);
  tft.setTextSize(1);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextWrap(false);
  tft.print(ShowText);  
  
}

SkobyMobil:
Ist ein mühseeliges Geschäft.

Mir ist das viel zu mühselig, ich bin faul, daher schaue ich beim proportionalen Font in GFXglyph, da steht die Zeichenbreite.