Autor Beitrag
VampireSilence
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: Fr 05.11.10 20:13 
Ich sitze hier gerade an einer Umsetzung für eine AutoSize-Eigenschaft für Buttons. Das Ergebnis soll später genau wie bei den Labels sein und ich brauche eigentlich nur einen kleinen Denkanstoß.

Bisher berechne ich die Breite der Buttons folgendermaßen:
14 + 10 * Text.Length

Das entspricht der Größe für die größten Buchstaben, wie "O" oder "X". So passen zumindest schonmal alle Zeichen rein, ohne verschluckt zu werden (Höhe übrigens 20px, immer -> kein Zeilenumbruch möglich / bzw. sichtbar), aber in die Button kommen später keine Texte, wie "OOO" oder "XX", sondern solche wie "Isobenzylketontetranitrat". Und besonders bei diesem Beispiel ist der Button später viel zu lang für den Text.

Als weitere kleine Erleichterung habe ich auch eine konstante Schriftart-/ und größe: "Microsoft Sans Serif; 8,25pt". Habt ihr da eine Idee ?

mfg
- VampireSilence
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 05.11.10 21:09 
Schau dir mal Graphics.MeasureString bzw. TextRenderer.MeasureText an. Damit kannst du dir die Größe eines Textes in Pixeln ermitteln lassen und dann entsprechend die Größe deines Buttons setzen.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 05.11.10 21:26 
Von welcher Darstellungstechnik reden wir hier?
Zumindest in Winforms haben Buttons bereits eine funktionierende AutoSize Eigenschaft.
VampireSilence Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: Fr 05.11.10 21:56 
@Th69
Echt praktisch, wusste garnicht, dass es sowas schon fertig gibt ! Das war genau das, was ich brauchte.

@Ralf Jansen
Ja, wir reden von WinForms, allerdings generiere ich die betreffenden Buttons erst zur Laufzeit, daher muss ich die Breite direkt selbst errechnen. Und da AutoSize auch die Höhe verändert (was ich nicht will), kann ich diese nicht nutzen.

mfg
- VampireSilence