SWT Image: Grösse des Bildes zur Laufzeit ändern

fju

Grünschnabel
Hallo Leute
Ich möchte verschiedene Bilder (*.jpg) unterschiedlichster Grösse (800*600, 1024*768, etc) laden und abwechslungsweise in einem Label darstellen.
Die angezeigte Bildgrösse des Labels darf sich aber nicht verändern. Sie sollte immer (400*300) sein.

Image bild = new Image(display, einstellungen.absoluter_Pfad + "test.jpg");

Das Bild wird mir angezeigt, jedoch leider nur ein Ausschnitt.

Habe es mit ImageData probiert, jedoch ohne Erfolg.

Besten Dank

Stefan Graf
 
Hallo Stefan!

Versuchs mal so:
Code:
package de.tutorials;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class Test01 {

	public static void main(String[] args) {

		final Map cache = new HashMap();

		final Display display = new Display();
		final Shell shell = new Shell(display);

		shell.setText("Test01");
		shell.setLayout(new GridLayout(2, false));

		final Combo cboImgs = new Combo(shell, SWT.NONE);
		cboImgs.add("thema2_800.jpg");
		cboImgs.add("thema2_1024.jpg");

		Button btnAction = new Button(shell, SWT.PUSH);
		btnAction.setText("show img");

		final Label lblImg = new Label(shell, SWT.BORDER);
		lblImg.setSize(400, 300);

		btnAction.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {

				String txt = cboImgs.getText();
				if (txt.equals(""))
					return;

				Image img = (Image) cache.get(txt);
				if (img == null) {
					ImageData imgData = new ImageData("c:/imgs/" + txt);
					imgData = imgData.scaledTo(400, 300);
					img = new Image(display, imgData);
					cache.put(txt, img);
				}
				lblImg.setImage(img);
				shell.pack();
			}
		});

		shell.open();

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}

		for (Iterator iter = cache.keySet().iterator(); iter.hasNext();) {
			Image img = (Image) cache.get(iter.next());
			img.dispose();
		}
	}
}

Gruß tom
 

Neue Beiträge

Zurück