SWT Composite + Image + zeichnen

lumo

Top Contributor
Hallo,

Ich habe eine Componente, die Composite extended.

in dieser componente will ich mir ein bild generieren, und dieses anschließend auch auf die composite zeichnen.


dazu habe ich eine zweidimensionale matrix (globale var) (mit den bilddaten)
leider hab ich das erste problem schon beim erstellen des Images
und zwar folgendes:

(mir ist klar warum das nicht geht)

Code:
	private Image matrix2image(int multiplyer) {
		int size = matrix.length * multiplyer;
		Image img = new Image(new Display(), size, size);
		return img;
	}
Invalid thread access - ist mir klar, da ich ja new Dispay anwende
ergo mach ich das mit dem dispay der componente!

Code:
	private Image matrix2image(int multiplyer) {
		int size = matrix.length * multiplyer;
		Image img = new Image(getDisplay(), size, size);
		return img;
	}
nun hätte ich mir erwartet, dass das klappt, jedoch auch hier laufe ich wieder in eine exception:
Code:
java.lang.IllegalArgumentException: Argument not valid
	at org.eclipse.swt.SWT.error(SWT.java:3865)
	at org.eclipse.swt.SWT.error(SWT.java:3799)
	at org.eclipse.swt.SWT.error(SWT.java:3770)
	at org.eclipse.swt.graphics.Image.init(Image.java:1562)
	at org.eclipse.swt.graphics.Image.<init>(Image.java:177)
	at ...matrix2image(MyCode.java:64)
warum?
 
das war auch mein erster gedanke...
darum hab ich per sysout noch ein paar infos ausgegeben
Code:
maximum von höhe oder breite der composite: 234
größe der matrix: 29
größe der pixel (scale): 8
größe des bildes (quadratisch!): [size]232

also ist die größe nicht <= 0

hinweis: in swing hab ichs schon implementiert 🙂

damit mal veranschaulicht werden kann was das ergebnis sein soll (hier halt meine implementierung in swing)
 
Zuletzt bearbeitet:
wie oben geschrieben 8

hab gerade rausgefunden, dass das problem in der paint methode liegt - was mich überrascht ist, dass er das im stacktrace nicht angegeben hat :-S

-> problem gelöst

danke!
 

Neue Themen


Zurück
Oben