nur Ausschnitt eines Image zeichnen

flash2910

Mitglied
Hallo zusammen,

ich programmiere grade ein kleines Spiel und bin auf ein Problem gestoßen.
Und zwar hat das Spiel eine healthbar, die als Bild in das Programm geladen und dann
links oben in die Ecke gezeichnet wird. Allerdings nimmt die Länge der Healthbar natürlich
irgendwann ab, und dann sollen nur noch die z.B. 50 ersten Pixel der Healthbar gezeichnet werden.
Wenn ich jetzt allerdings die Methode drawImage(x,y,width,height) verwende, dann skaliert java
das bild und "quetscht" es damit. Gibt es eine Möglichkeit, einen Teil eines Images zu zeichnen, ohne
dass dabei das Bild skaliert wird?

Grüße

Ich

screenshot.jpg
 
hmm, irgendwie tut das nich.
2 Probleme:
1. die Methode getSubimage(int,int,int,int) wird nicht gefunden
2. (dazu kams nicht, aber wirds wenn Prob 1 behoben ist) wie kann ich das Buffered Image dann in mein Graphics-Objekt zeichnen?
 
Zu den beiden Problemen:
1. Vielleicht hast du gar kein BufferedImage? Was anderes fällt mir dazu jetzt nicht ein 😉
2. Genauso wie du das Bild bisher zeichnest? ???:L

Aber: in diesem Fall einfacher und geeigneter ist vermutlich diese Funktion hier:
Klick mich!
Die ersten 4 int-Parameter geben das Rechteck an, wohin gezeichnet werden soll. Die zweiten 4 Parameter geben innerhalb deines Bilds das Rechteck an, das gezeichnet werden soll.
 
1. Ich erzeuge eins mit bufferedimage bf= blablabla
2. Ich zeichne die Bilder mit drawImage - es gibt kein drawBufferedImage

Aber egal, dein Tipp is eh viel besser -- funktioniert super, danke =P Hatte die Funktion schon selbst gefunden, konnte aber nichts mit der Beschreibung in der API anfangen.
 
Nur für die Vollständigkeit:

1. Kann leider nicht sein 😉 Vielleicht irgendwo ein Tippfehler?
2. Jedes BufferedImage ist auch ein Image. Deshalb kann man die ganz normalen drawImage-Methoden verwenden. (Und wenn du eh schon
Code:
BufferedImage bf
hast... wie zeichnest du das dann sonst? Jedenfalls kannst du einfach
Code:
drawImage(bf, ...)
machen 😉)
 
so wie ich den Healthbar sehe, es gibt eine einfache Loesung:

Du brauchst gar nichts mit dem Healthbar zu machen.

Platziere das einmal und vergiss es.

Dann zeichne ein schwarzes JLabel ueber den Bar (oder g.fillRect wenn du auf j2me bist)
und spiele mit der Laenge und mit der X-position von diesem JLabel (wenn du auf j2se bist) jedes Mal wo eine Aenderung in der Kraft von deinem Held-Figur passiert.

So hast Du das Effect wo das Healthbar nimmt ab oder zu.
 
Zuletzt bearbeitet:
aber hinter der healthbar ist das bild des spiels zu sehen, wenn die health abnimmt, kann man sehen was dahinter ist. mit einem schwarzen label drüber wäre der bereich schwarz - das würde ja komisch aussehen. davon abgesehen ist das problem schon gelöst mit drawImage(Image, dx1,dy1,dx2,dy2,sx1,sx2,sy1,sy2)
 
Oh! dann sorry.

Aber in diesem Screenshot es sieht aus, dass der Hintergrund, da wo der Healthbar liegt, einfarbig ist, so in diesem Fall das wuerde klappen mit dem einfarbigen JLabel. Auf jeden Fall, gut dass du die Loesung gefunden hast.
 

Zurück
Oben