Bild Seitenvehältnisproblem

SCIPIO-AEMILIANUS

aka Dubdidadu
Nabend, zu später Stund ein kleines Problem noch. Ich vermute mal ich hab nurn Brett vorm Kopf, aber ich find den Fehler nicht.
Code:
m_imgRect=new Rectangle();
				double imgWidth=(double)this.m_image.getWidth();
				double imgHeight=(double)this.m_image.getHeight();
				double scWidth=(double)this.getWidth();
				double scHeight=(double)this.getHeight();
				if((imgWidth/imgHeight)>=(scWidth/scHeight)){
					System.out.println("BILD GROESSER");
					m_imgRect.x=0;
					m_imgRect.width=(int)Math.round(scWidth);
					m_imgRect.height=(int)Math.round(scWidth/imgWidth*imgHeight);
					m_imgRect.y=(int)Math.round((scHeight-(double)m_imgRect.height)/2.0);
				}
				else{
					System.out.println("BILD KLEINER");
					m_imgRect.y=0;
					m_imgRect.height=(int)Math.round(scHeight);
					m_imgRect.width=(int)Math.round(scHeight/imgHeight*imgWidth);
					m_imgRect.x=(int)Math.round((scWidth-(double)m_imgRect.width)/2.0);
				}
				System.out.println(m_imgRect.x+"-"+m_imgRect.y+"-"+m_imgRect.width+"-"+m_imgRect.height);
			//}
			g.drawImage(this.m_image,m_imgRect.x,m_imgRect.y,m_imgRect.width,m_imgRect.height,0,0,this.m_image.getWidth(),this.m_image.getHeight(),null);
steht in der Paint Funktion einer Componente. Vorhergehend wird die gesamte Fläche der Componente grau gefärbt. Wenn ich nun die Fenstergröße verändere kommts zu folgenden Erscheinungen:prob1.jpg
prob2.PNG
Konsolenausgabe:
BILD GROESSER
0-211-708-531
[..]
BILD GROESSER
0-259-624-468
Wie man sieht steht es im Log eigentlich richtig. Somit dürfte zumindest kein Fehler in der Rechnung sein.
 
Zuletzt bearbeitet:
So, ich hab ein bisschen weitergeforscht und mein Stand ist soweit, dass es mir der drawImage Methode zusammenhängen muss, da wenn ich obenstehenden Code erweitere:
Code:
g.drawImage(this.m_image,m_imgRect.x,m_imgRect.y,m_imgRect.width,m_imgRect.height,0,0,(int)imgWidth,(int)imgHeight,null);
			g.setColor(new Color(255,0,0));
			g.drawRect(m_imgRect.x,m_imgRect.y,m_imgRect.width,m_imgRect.height);
habe ich dann folgendes Ergebnis und der rote Bereich entspricht anscheinend den eigentlich gewollten Außmaßen.
prob3.PNG
 
So, letzteres hat mir jetzt doch selbst noch die Augen geöffnet... Während drawRect die Weite und die Höhe als Parameter kriegt, nimmt drawImage die Eckpunkte. Musste somit nur auf die Längen noch die linke obere Ecke draufrechnen und Problem war gelöst... endlich.
Oft sinds die einfachen Sachen.
 
Zurück