# Graphics.drawString (Graphics2D.drawString) Y-Problem



## s03 (4. Nov 2008)

Hallo allerseits,
wie der Titel schon sagt, habe ich ein "kleines" Problem mit "drawString".
Wenn ich versuche ein String auf einem Grafikkontext auszugeben:


```
//Hier
@Override
public void paint(Graphics g){
}
//oder hier
void TuWas(){
	BufferedImage img=BufferedImage(200,200);
	Graphics2D g=img.createGraphics();
}
```
habe ich ein Problem mit der Y-Koordinate. Und zwar ist der String bei:


```
g.translate(0, 0);				
g.drawString("Test", 0, 0);
```
überhaupt nicht sichtbar. Bei:


```
g.drawString("Test", 0, 1);
```
Sehe ich die letzten unteren Pixels des Textes. Erst bei:


```
g.drawString("Test", 0, 7);
```
sehe ich den ganzen Text in Abhängigkeit von der Schriftgrösse (FontSize=10). 
Um den Text "richtig" auszugeben versuche ich zunächstmal den OffSet zu berechnen. Aber das kann doch nicht sein!?
Habe ich was nicht berücksichtig oder was falsch verstanden (bin neu in Java).

Mit:


```
g.drawRect(0, 0, 40, 40);
```
habe ich keine Probleme.


----------



## The_S (4. Nov 2008)

naja, es wird eben an der Stelle, die du als Y-Koordinate angibst, angefangen dein String zu zeichnen. Und es ist doch logisch, dass der erste "Punkt" über dieser Y-Koordinate ist. Dein Text wird ja auch nicht komplett vor die X-Koordinate geschrieben  .


----------



## s03 (4. Nov 2008)

Das heißt, dass im Falle vom String von links nach rechts und von unten nach oben gezeichnet wird? OK. jetzt weiß ich bescheid.
Bin von Delphi und C# gewonnt auch bei Strings mit 0,0 anzufangen.

Danke dir für eine schnelle Antwort.


----------



## The_S (4. Nov 2008)

ja, das heißt das. Keine Ursache  .


----------



## s03 (5. Nov 2008)

So, für andere Umsteiger, die auch mit "Y-Koordinate" Probleme haben . Bei "drawString" sollte man die so genannte Baseline beachten.
Ich habe es im Moment so gelöst, dass ich ein Y-Offset wie folgt berechne: 

```
YOffset=FontMetrics.getAscent()-FontMetrics.getDescent();
```
Ansonsten kann man noch solche Sachen anschauen:

TextLayout.draw(Graphics2D, ...)
Graphics2D.drawGlyphVector()

zu finden in:
Advanced2D-J1-2005.pdf


----------

