# [SWT] Background-Image skalieren statt kacheln



## peterfolta (22. Dez 2008)

Hallo,

die Methode setBackground() eines Composites beispielsweise kachelt ein Image, wenn dieses zu klein für die zu "bedeckende" Fläche ist.

Ich habe ein Image, das zu *groß* ist, möchte aber, dass es (auch ohne Berücksichtigung der Seitenverhältnisse) auf die Anzeigefläche runterskaliert wird.

Leider habe ich dazu nichts gefunden und fürchte schon, dass dies nicht geht, was sehr ärgerlich wäre. Hat jemand von Euch eine Idee? Falls es nicht möglich ist, kann man wenigstens ein Image-Objekt erzeugen, dass ein Bild aus dem Dateisystem liest, aber nicht dessen Abmessungen übernimmt, sondern eigene, vordefinierte verwendet?

Liebe Grüße,
Peter


----------



## Vayu (22. Dez 2008)

du könntest die Methode getBackgroundImage() überschreiben, dir dort drin die Grösse deines Composites holen und das Image dann rescalen und zurückgeben.


```
public Image resize(int w, int h, Image img) {
        Image newImage = new Image(Display.getDefault(), w, h);
        GC gc = new GC(newImage);
        gc.setAntialias(SWT.ON);
        gc.setInterpolation(SWT.HIGH);
        gc.drawImage(img, 0, 0, img.getBounds().width, img.getBounds().height, 0, 0, w, h);
        gc.dispose();
        img.dispose();
        return newImage;
    }
```


----------



## peterfolta (22. Dez 2008)

Hallo,

ja, auf diese Weise funktioniert es: Vielen Dank für den Code, auch wenn ich den natürlich auch selbst hingekriegt hätte .
Habe aber wie gesagt gedacht, dass es vielleicht eine bereits vorhandene Methode dafür gibt.

Aber nochmals vielen Dank!

Liebe Grüße,
Peter


----------

