Schriftgröße aus vorhandenem Platz berechnen

Status
Nicht offen für weitere Antworten.
J

.joe

Gast
Hi,

ich suche eine Möglichkeit die maximale Schriftgröße zu berechnen um in einem gegebenen Rechteck einen gegebenen Text zu zeichnen.

Einzige mir bekannte Möglichkeit ist eine Schriftgröße zu wählen und dann über das FontMetrics-Objekt zu testen wie hoch und breit der Text mit dieser Schriftgröße wird. Ich möchte aber möglichst auf diese Bruteforce-Variante verzichten und nicht mehrere Schriftgrößen durchtesten um eine passende zu finden.
 

André Uhres

Top Contributor
.joe hat gesagt.:
..die maximale Schriftgröße zu berechnen um in einem gegebenen Rechteck einen gegebenen Text zu zeichnen..
Du vergisst dabei die Schriftart :wink:
Übrigens ist es in der Informatik keine Seltenheit, dass für ein bestimmtes Problem kein effizienter Algorithmus existiert.
 

.joe

Mitglied
ja ich bin davon ausgegangen das wäre klar.

sicher sind einige probleme nicht effizient lösbar, dieses stelle ich mir aber durchaus lösbar vor da es ja prinzipiell nur um eine umrechnung von punkt zu pixel gehen müste und das in die andere richtung funktioniert.
 

.joe

Mitglied
wenn ich wüsste wie der implementiert ist und ich das so einfach machen könnte würde ich nicht hier fragen.
 

.joe

Mitglied
kannst du mir helfen oder nicht?
wenn nicht spar dir gegenfragen die das thema nicht voran bringen, danke. ich weis nicht, was so undeutlich an meiner aussage war das ich nicht weis wie es geht.
 

André Uhres

Top Contributor
.joe hat gesagt.:
..ich weis nicht, was so undeutlich an meiner aussage war das ich nicht weis wie es geht.
Naja, wenn jemand sagt, etwas müsse seiner Meinung nach gehen, dann denk ich mal,
dass er eine gewisse Vorstellung davon hat, wie es gehen könnte,
auch wenn er mit die Implementierung nicht klar kommt.
Aber da wir beide keine Idee haben, ist es wohl Essig.
 

.joe

Mitglied
so, ich hatte heute eine erleuchtung nach wochen.
hier eine mögliche lösung, für alle die auf das gleiche problem stoßen:

Code:
public static Font calculateFontSize(Graphics g, String fontName, int fontStyle,
		String text, int width, int height) {
		
	FontMetrics metrics = g.getFontMetrics(new Font(fontName, fontStyle, 10));
	float heightFactor = height/(float)metrics.getHeight();
	float widthFactor = width/(float)metrics.stringWidth(text);
		
	return new Font(fontName, fontStyle, (int) Math.floor(10*Math.min(heightFactor, widthFactor)));
}
 

André Uhres

Top Contributor
.joe hat gesagt.:
..hier eine mögliche lösung..
Das könnte u.U. passen, leider imho nicht ganz zufriedenstellend.
Hier nur ein zufälliges Beispiel: "Arial",Font.PLAIN,"Das könnte u.U. passen",300,30
damit kommt Fontsize 23 statt 26 raus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
Neumi5694 Schriftgröße zur Laufzeit AWT, Swing, JavaFX & SWT 4
F Schriftgröße von Buchstaben berechnen AWT, Swing, JavaFX & SWT 3
A Schriftgröße in JLabel ändern AWT, Swing, JavaFX & SWT 5
S JFreeChart - Schriftgröße der Legende AWT, Swing, JavaFX & SWT 2
B Schriftgröße allgemein verändern? AWT, Swing, JavaFX & SWT 4
H Schriftgröße automatisch an JLabel anpassen AWT, Swing, JavaFX & SWT 6
R JEditorPane Schriftart und Schriftgröße AWT, Swing, JavaFX & SWT 3
M Schriftgröße ermitteln AWT, Swing, JavaFX & SWT 7
L Schriftgröße bei Eingabefeldern AWT, Swing, JavaFX & SWT 2
K Schriftgröße AWT, Swing, JavaFX & SWT 13
A Schriftgröße bei EtchedBorder() AWT, Swing, JavaFX & SWT 7
D SWT: Funktion zum Auslesen der Schriftgröße AWT, Swing, JavaFX & SWT 2
DeeDee0815 JLabel schriftgröße verstellen AWT, Swing, JavaFX & SWT 8
H Graphics: Schriftgröße ändern AWT, Swing, JavaFX & SWT 4
J Schriftgröße verändern AWT, Swing, JavaFX & SWT 6
B Schriftgröße bei Buttons AWT, Swing, JavaFX & SWT 3
R Swing Ausnutzung von vorhandenem Platz AWT, Swing, JavaFX & SWT 13
R JList einem vorhandenem JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
TheWhiteShadow JavaFX ScrollPane nimmt nicht genug platz ein AWT, Swing, JavaFX & SWT 3
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
Kenan89 Border nimmt Platz AWT, Swing, JavaFX & SWT 17
I Swing JLabel - Platz schaffen AWT, Swing, JavaFX & SWT 10
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
F LayoutManager GridBagLayout nutzt Platz nicht AWT, Swing, JavaFX & SWT 2
T Layoutmanager der vorhanden Platz beruecksichtigt? AWT, Swing, JavaFX & SWT 5
T paintComponent() überschreiben: Platz für Border freihalten? AWT, Swing, JavaFX & SWT 6
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
R das letzte JLabel in der Schleife will nicht an seinen Platz AWT, Swing, JavaFX & SWT 2
F Benötigter Platz von Komponenten AWT, Swing, JavaFX & SWT 3
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
M zur Verfügung stehenden Platz ausfüllen AWT, Swing, JavaFX & SWT 5
Z bei kleinen Buttons verschwindet Schrift, obwohl Platz wäre AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben