# Image drucken



## Guest (27. Okt 2008)

Hallo zusammen,

ich erstelle aus einem JPanel ein Image zum drucken.
Das Panel ist schon größer als eine DinA4 Seite, also skaliere ich das Image auf die Seitengröße.

Das Problem ist jetzt das die Schrift dadurch sehr unscharf wird. gibt es eine Möglichkeit das ganze noch schärfer zu machen?


----------



## The_S (27. Okt 2008)

Kommt auf den skalier-Algorithmus an, würde ich mal sagen. Oder die Schrift (soweit möglich) erst nach dem Skalieren einfügen ...


----------



## Guest (27. Okt 2008)

nacher einfügen geht leider nicht.
handelt sich dabei um ein diagramm und das sind die achsbeschriftungen und die werden gelich mitgezeichnet, da sonst die zuordnung nicht mehr passen würde.


----------



## The_S (27. Okt 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Kommt auf den skalier-Algorithmus an



... oder gleich eine größere Schriftart verwenden.


----------



## Guest (27. Okt 2008)

Hab ich auch schon probiert.
Von 14 - 48..
Schmiert alles. 
Liegt wohl an den 72DPI.


----------



## The_S (27. Okt 2008)

Magst du nicht auf den skalier-algo eingehen, oder warum ignorierst du das immer?


----------



## Guest (27. Okt 2008)

```
double dblScaleX = pageFormat.getImageableWidth()/objDruckvorlage.getSize().width;
        double dblScaleY = pageFormat.getImageableHeight()/objDruckvorlage.getSize().height;
        g2d.scale(dblScaleX, dblScaleY);
```
so skaliere ich das JPanel auf das pageFormat


----------



## The_S (27. Okt 2008)

Wenn du über die Klasse Image (getScaledInstance) anstatt Graphics2D skalieren würdest, könntest du den Skalier-Algorithmus beeinflussen und testen, welcher für dich das beste Ergebnis liefert.


----------



## Guest (27. Okt 2008)

Ich werds mal damit versuchen.
Vielen Dank erstmal für deine Hilfe.


----------



## Guest (27. Okt 2008)

Hallo,

habs mit der Skalierung aus Image probiert, bekomme aber immer nur ein weißes Blatt.


```
BufferedImage img2 = new BufferedImage(objDruckvorlage.getWidth(),objDruckvorlage.getHeigh
(),BufferedImage.TYPE_INT_RGB);

g2 = img2.createGraphics();
objDruckvorlage.paint(g2);
g2.dispose();

Image scaled = img2.getScaledInstance((int)pageFormat.getWidth(), (int)pageFormat.getHeight(), Image.SCALE_SMOOTH );

BufferedImage imgNeu = new BufferedImage((int)pageFormat.getWidth(),(int)pageFormat.getHeight(),BufferedImage.TYPE_INT_ARGB);

g2 = imgNeu.createGraphics();
g2.drawImage(scaled,0,0, this);
g2.dispose();

g2d.drawImage(imgNeu, (int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight(),this);
```


----------



## The_S (27. Okt 2008)

arbeitet objDruckvorlage.paint korrekt?

Was liefert "pageFormat.getImageableWidth()" bzw. "pageFormat.getImageableHeight()" zurück?


----------



## Guest (27. Okt 2008)

paint methode arbeitet korrekt.
hab das image vor dem skalieren probehalber ausgegeben und da ist alles in ordnung.

pageFormat.height = 595.2755737304688;
pageFormat.width = 841.8897705078125;


----------



## The_S (27. Okt 2008)

Dann wird das Bild evtl. außerhalb deines Darstellungsbereichs gezeichnet? Weil 595 und 841 ist schon arg weit unten links ...


----------



## Guest (27. Okt 2008)

eigentlich müsste es aber passen.

hole mir ja bevor ich zeiche über 

```
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
```
die startkoordinaten.


----------



## Guest (27. Okt 2008)

hab gerade mal das skalierte Bild als jpg abgespeichert.
das bild wird erstellt, aber das ganze sieht aus wie n negativ.


----------



## The_S (27. Okt 2008)

Zu deinem 1. Post: Poste doch bitte trotzdem mal das "objDruckvorlage.paint"
Zu deinem 2. Post: Liegt wohl doch an den Koordinaten!?


----------



## Guest (28. Okt 2008)

Hab den Fehler gefunden.
Lag nicht an der Paint Methode, sondern das ich falsche Variablen benutzt hatte um das Bild zu skalieren.


----------



## Guest (28. Okt 2008)

Hab den Fehler gefunden.
Lag nicht an der Paint Methode, sondern das ich falsche Variablen benutzt hatte um das Bild zu skalieren.
Vielen Dank nochmal für deine Hilfe.


----------

